Przejdź do treści głównej
INF.03Pytanie #1540 z 1558php-skladnia-i-struktury

Przeanalizuj poniższy fragment kodu PHP zawierający dwie pętle foreach. Jaki rezultat zostanie wypisany przez funkcję print_r?

php
<?php
$arr = [1, 2, 3];
foreach ($arr as &$val) {
    // pętla pozostawia referencję
}
foreach ($arr as $val) {
    // pętla nadpisuje referencję
}
print_r($arr);
?>
Opcje odpowiedzi:
A
Array ( [0] => 1 [1] => 2 [2] => 3 )
B
Array ( [0] => 1 [1] => 2 [2] => 2 )
Prawidłowa
C
Array ( [0] => 1 [1] => 2 [2] => 1 )
D
Array ( [0] => 2 [1] => 2 [2] => 2 )
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B (Array ( [0] => 1 [1] => 2 [2] => 2 ))

Ponieważ po zakończeniu pierwszej pętli zmienna $val pozostaje aktywną referencją do ostatniego elementu tablicy, czyli do $arr[2]. W drugiej pętli, w każdej iteracji, kolejny element tablicy jest kopiowany do zmiennej $val. W pierwszej iteracji drugiej pętli wartość $arr[0] (czyli 1) trafia do $val, a ponieważ $val wskazuje na $arr[2], tablica zmienia się na [1, 2, 1]. W drugiej iteracji wartość $arr[1] (czyli 2) trafia do $val (modyfikując $arr[2]), przez co tablica zmienia się na [1, 2, 2]. W trzeciej iteracji do $val kopiowana jest aktualna wartość $arr[2] (czyli 2), więc ostateczny stan tablicy to [1, 2, 2].

Opcja A jest niepoprawna, ponieważ zakłada brak wpływu pozostawionej referencji na strukturę danych. Opcja C jest niepoprawna, ponieważ odzwierciedla stan tablicy po pierwszej iteracji drugiej pętli. Opcja D jest niepoprawna, ponieważ zakłada nieprawidłowe nadpisanie wszystkich indeksów tablicy.

Dlaczego pozostałe opcje są nieprawidłowe?

  • A: Opcja Array ( [0] => 1 [1] => 2 [2] => 3 ) nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.
  • C: Opcja Array ( [0] => 1 [1] => 2 [2] => 1 ) nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.
  • D: Opcja Array ( [0] => 2 [1] => 2 [2] => 2 ) nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.

Chcesz poćwiczyć całą kwalifikację INF.03?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF03
Reklama

Podobne pytania z działu „Php skladnia i struktury”

Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 165 pytań z tego działu.