Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: foreach и null
Форумы портала PHP.SU » » Вопросы новичков » foreach и null

Страниц (1): [1]
 

1. glutaminefree - 30 Декабря, 2012 - 15:28:54 - перейти к сообщению
Приветствую!

Столкнулся с таким вот поведением foreach:

PHP:
скопировать код в буфер обмена
  1. php > $arr = array('1' => '123', '2' => '123', '3' => '123');
  2. php > var_dump($arr);
  3. array(3) {
  4.   [1]=>
  5.   string(3) "123"
  6.   [2]=>
  7.   string(3) "123"
  8.   [3]=>
  9.   string(3) "123"
  10. }
  11. php > foreach( $arr as &$a ) $a = null;
  12. php > var_dump($arr);
  13. array(3) {
  14.   [1]=>
  15.   NULL
  16.   [2]=>
  17.   NULL
  18.   [3]=>
  19.   &NULL
  20. }


Вот интересует, почему последний элемент не NULL, а ссылка на NULL? И можно ли что-то сделать, чтобы избежать этого, кроме как после foreach присваивать в наглую NULL последнему элементу?
(Добавление)
Хмм, ему даже если после присвоить какое-либо значение, то это будет ссылка на значение. Видимо проще всего работать с временным массивом, а после присвоить его первичному.
2. OrmaJever - 30 Декабря, 2012 - 15:50:15 - перейти к сообщению
3. glutaminefree - 30 Декабря, 2012 - 16:11:44 - перейти к сообщению
Действительно помогает. Я думал, что unset переменной после foreach со ссылкой уничтожит последний элемент.

 

Powered by ExBB FM 1.0 RC1