WTF???

3jIo

Новичок
Только начал читать офф мануал по пхп, как увидел это:
PHP:
$arr = array('a'=>'first', 'b'=>'second', 'c'=>'third');
foreach ($arr as &$a); // do nothing. maybe?
foreach ($arr as $a);  // do nothing. maybe?
Как это понимать?
 

3jIo

Новичок
Также хотелось бы узнать возможна ли передача не анонимной функции по ссылке?
 

Vano

Новичок
При передачи ссылки на элемент, его сразу же можна изменить
 

3jIo

Новичок
Возможно вам лень было запускать код. Но собственно результат на 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);
 

3jIo

Новичок
Не могу понять почему изменяется исходный массив. Ведь я туда нечего не записываю, а только копирую.
 

fixxxer

К.О.
Партнер клуба
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

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