Непонятный foreach

Adelf

Administrator
Команда форума
Непонятный foreach

У меня скорее не проблема(с ней я справился), а непонятка с циклом foreach.

PHP:
....// вычисления тут

var_dump($searches);

foreach($searches as $key => $search)
{
	print $key.' '.$search['count'].'<br>';
}
Вывод скрипта:
PHP:
array
  'Google' => 
    array
      0 => string 'www.google' (length=10)
      1 => string 'q' (length=1)
      'count' => int 69
  'Yandex' => 
    array
      0 => string 'www.yandex' (length=10)
      1 => string 'text' (length=4)
      'count' => int 1
  'Mail.ru' => 
    array
      0 => string 'go.mail' (length=7)
      1 => string 'q' (length=1)
      'count' => int 31
  'Bing' => 
    array
      0 => string 'www.bing' (length=8)
      1 => string 'q' (length=1)
      'count' => int 3
  'Rambler' => &
    array
      0 => string 'nova.rambler.ru' (length=15)
      1 => string 'query' (length=5)
      'count' => int 46

Google 69
Yandex 1
Mail.ru 31
Bing 3
Rambler 3
Цифра с рамблером заставляет задуматься. Могу только сказать что переменная с именем $search использовалась ранее в вычислениях(а какая разница то использовалась она или нет?).

при замене кода на такой:
PHP:
foreach($searches as $key => &$search)
{
	print $key.' '.$search['count'].'<br>';
}
или такой:
PHP:
foreach($searches as $key => $search1)
{
	print $key.' '.$search1['count'].'<br>';
}
Все отлично работает.

Только что заметил, что когда делаем var_dump отображает: 'Rambler' => & - что означает амперсанд в данном случае?

Инициализация массива:
PHP:
$searches = array(
	'Google' => array('www.google', 'q'),
	'Yandex' => array('www.yandex', 'text'),
	'Mail.ru' => array('go.mail', 'q'),
	'Bing' => array('www.bing', 'q'),
	'Rambler' => array('nova.rambler.ru', 'query')
);
-~{}~ 21.08.09 10:46:

PHP Version 5.2.4, Vista SP1 32 bit.
 

DiMA

php.spb.ru
Команда форума
означает, что нужно включить голову и где-то в коде выше убрать еще один фореч с (searches as $key => &$search) или делать unset

читай доку
 

Adelf

Administrator
Команда форума
Хм.. спасибо. Всегда считал foreach настолько очевидной вещью, что ни разу не смотрел доку по нему.

-~{}~ 21.08.09 11:05:

Рамблер передан по ссылке и очевидно меняется где-то еще
Он менялся прямо в этом цикле :)
 
Сверху