Вызов функции в цикле for и foreach не работает в PHP - PullRequest
2 голосов
/ 14 августа 2011

У меня есть массив, по которому я перебираю цикл.Массив имеет URL-адрес в каждом элементе, который необходимо передать в качестве аргумента функции.

Когда я вызываю функцию во время итерации, цикл останавливается после первой итерации и не продолжается по всему массиву.

Когда я пытаюсь отобразить только значение в массиве и не вызывает функцию в цикле, он работает нормально.

Это та же проблема, если я использую цикл foreach.Пожалуйста, помогите.

Вот мой код

echo '<ol>';
for($i=0; $i < count($watchList); $i++){
    saveProduct(getProductDetail($watchList[$i]));
    echo ' <li>Product Saved '. $watchList[$i] .'</li>';
}
echo '</ol>';

Ответы [ 4 ]

2 голосов
/ 14 августа 2011

Возможно, что массив не последовательный.Вы предполагаете, что это идет от 0-n, но это может быть не так.Используйте это, и оно должно работать:

echo '<ol>';
foreach($watchList as $key=>$watchItem){
    saveProduct(getProductDetail($watchItem));
    echo ' <li>Product Saved '. $watchItem .'</li>';
}
echo '</ol>';
1 голос
/ 14 августа 2011
error_reporting(E_ALL );
ini_set('display_errors', '1');

Добавьте код выше к своему коду, чтобы увидеть, что не так?

foreach($watchList as $value){
    saveProduct(getProductDetail($value));
    echo ' <li>Product Saved '. $value .'</li>';

}
1 голос
/ 14 августа 2011

Нет проблем с циклом.Должно быть что-то не так с вызываемыми функциями.

Попробуйте включить отчет об ошибках, если вы этого еще не сделали.

ini_set(‘error_reporting’, E_ALL);
ini_set(‘display_errors’, 1);`
0 голосов
/ 02 июня 2015

Это потому, что ваш ключ массива не совпадает со значением $ i в каждой итерации цикла, возможно потому, что ваши ключи массива не являются последовательными целыми числами. Без сомнения, вывод (когда вы вызываете функцию) просто печатает «Product Saved», так как $ watchList [$ i] равен NULL.

Вы просто пытаетесь передать значение в массиве этой функции, поэтому сделайте это следующим образом, и не имеет значения, какие ключи;

echo '<ol>';
foreach($watchlist as $key => $item){
    saveProduct(getProductDetail($item));
    echo ' <li>Product Saved '. $item .'</li>';
}
echo '</ol>';
...