WTF???

  • Автор темы Автор темы 3jIo
  • Дата начала Дата начала

3jIo

Новичок
Только начал читать офф мануал по пхп, как увидел это:
PHP:
$arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');
foreach ($arr as &$a); // do nothing. maybe?
foreach ($arr as $a);  // do nothing. maybe?
Как это понимать?
 
Также хотелось бы узнать возможна ли передача не анонимной функции по ссылке?
 
При передачи ссылки на элемент, его сразу же можна изменить
 
Возможно вам лень было запускать код. Но собственно результат на php 5.5 будет:
PHP:
Array
(
    [a] => first
    [b] => second
    [c] => second
)

Хотя должно быть:

PHP:
Array
(
    [a] => first
    [b] => second
    [c] => third
)

Но если удалить переменную перед циклами то все ок:
PHP:
$arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');
foreach ($arr as &$a); // do nothing. maybe?
unset($a);
foreach ($arr as $a);  // do nothing. maybe?

print_r($arr);
 
Не могу понять почему изменяется исходный массив. Ведь я туда нечего не записываю, а только копирую.
 
PHP:
$arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');

$a = &$arr['c'];
var_dump($arr);
$a = $arr['a'];
var_dump($arr);
$a = $arr['b'];
var_dump($arr);
$a = $arr['c'];
var_dump($arr);

так понятнее? ;)
 
  • Like
Реакции: 3jIo
PHP:
$arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');

$a = &$arr['c'];
var_dump($arr);
$a = $arr['a'];
var_dump($arr);
$a = $arr['b'];
var_dump($arr);
$a = $arr['c'];
var_dump($arr);

так понятнее? ;)
Блин спс, теперь допер.... После жабы как-то не привычно. Получается у нас переменная ссылается на элемент массива, потом мы этот элемент заменяем... ну короче понял. спасибо.
 
Сверху