странное поведение зацикливания массивов в php - PullRequest
1 голос
/ 29 октября 2009

У меня есть индексированный массив, который я сгенерировал из ассоциативного массива с этим кодом

$index_arr = array();
foreach($assoc_arr as $key => $val ){
   $index_arr .= $val;
}

когда я печатаю его с print_r($index_arr);, он работает нормально. Но когда я пытаюсь распечатать его с помощью foreach, я получаю сообщение об ошибке «Недопустимый аргумент для foreach ()»

foreach($index_arr as $one){
   echo "one: $one<br />";
}

Я почти уверен, что это правильный синтаксис или я слишком устал в это время суток?

Ответы [ 4 ]

5 голосов
/ 29 октября 2009

Вы превращаете массив в строку, используя оператор. =. Вы хотите использовать:

$index_arr[] = $val;

Добавить в конец.

Также в этом конкретном случае вы можете просто сделать:

$index_arr = array_values($assoc_arr);

Это именно то, что делает ваш цикл.

2 голосов
/ 29 октября 2009

Когда вы сделали $index_arr .= $val; PHP выполнил операцию String. Вам нужно сделать $index_arr[]=$val;

2 голосов
/ 29 октября 2009

Нужно быть таким:

$index_arr = array();
foreach($assoc_arr as $key => $val ){
   $index_arr[] = $val;
}

Также

foreach($index_arr as $key=>$data){
   echo "Key: ".$key." Data: ".$data."<br />";
}
1 голос
/ 29 октября 2009
$index_arr .= $val;

должно быть

$index_arr[] = $val;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...