Основной вопрос цикла foreach - PullRequest
1 голос
/ 17 ноября 2009

Спасибо за помощь здесь:

циклы foreach и объекты стандартного класса

Я настроил цикл foreach, но проблема в том, что иногда получается:

Предупреждение: указан неверный аргумент для foreach () в / Главная / MyAccount / public_html / script.php в строке 81

Я думаю, что тогда нечего заполнять цикл foreach, но я испугался, что это происходит, когда действительно была одна запись.

Мой вопрос: что делает цикл foreach, когда есть только одна запись?

Ответы [ 6 ]

4 голосов
/ 17 ноября 2009

foreach работает только с массивами, поэтому вам нужно будет обернуть этот элемент в массив.

Начиная с PHP 5, можно итерировать объекты. http://php.net/manual/en/control-structures.foreach.php

Чтобы узнать больше об итерации объектов, смотрите: http://www.php.net/manual/en/language.oop5.iterations.php

3 голосов
/ 17 ноября 2009

foreach в PHP5 может перебирать объект или массив.

Я публикую это, чтобы уравновесить тех, кто говорит, что вы не можете использовать объект.

И как охватывают другие ответы, если ваши данные будут повторяться в foreach, они должны каждый раз переноситься одинаково. Всегда массив (даже если это только один элемент) или всегда объект (даже если это только один метод).

2 голосов
/ 17 ноября 2009

Как говорит oremj, вам понадобится массив. Если у вас иногда есть массив, а иногда только одна вещь, вы можете преобразовать его в массив, чтобы убедиться, что вы работаете с массивами каждый раз. Одна вещь будет массивом («одна вещь») после приведения его к массиву. Затем вы можете зациклить его, и цикл начнется и закончится «одной вещью».

редактировать: как указывали другие, возможно также зацикливание на объекте.

1 голос
/ 17 ноября 2009

foreach будет отлично работать на массиве, содержащем только 1 элемент. Попробуйте этот пример:

$foodlist = array("burrito");

foreach ($foodlist as $food) {
  echo $food . "\n";
}
0 голосов
/ 18 ноября 2009

Попробуйте это:

// Make sure array is an array
if (!$array) $array = array();
if (!is_array($array)) $array = array($array);

foreach ($array as $value) {
    echo $value."<br />";
}
0 голосов
/ 17 ноября 2009

Пример:

<?php

$array = array(1, 2, 3, 4, 5);
foreach ($array as $value) {
    echo $value."<br />";
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...