2011-08-13 66 views
2

我有一个迭代使用for循环的数组。该数组在每个元素上都有URL,需要作为参数传递给函数。调用PHP中的foreach循环失败函数

当我在迭代期间调用函数时,循环在第一次迭代后停止,并且不会在整个数组上进行。

当我尝试只回声数组中的值,并没有在循环中调用函数,然后它工作正常。

这是如果我使用foreach循环相同的问题。请帮忙。

这里是我的代码

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

'count($ watchList)'的值是多少? –

+0

'saveProduct'或'getProductDetail'是否以任何方式修改'$ watchList'? –

+0

288个项目 如果我评论函数调用,并且只在函数后面回显下面的行,我会看到输出的所有迭代。 – Wikki

回答

1

与循环没有问题。一定是你打电话的功能有问题。

如果您还没有打开错误报告,请尝试打开。上面的代码

ini_set(‘error_reporting’, E_ALL); 
ini_set(‘display_errors’, 1);` 
1
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

添加代码,看看有什么不对?

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

} 
+0

令人惊讶的是,在第一次迭代结果中数据被保存在db中但是循环失败 – Wikki

2

有可能数组不是顺序的。你假设它从0-n开始,但情况可能并非如此。使用此,它应该工作:

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

这是因为你的数组键没有在每个循环迭代匹配$ i的值,大概是因为你的数组键是不连续的整数。毫无疑问,当$ watchList [$ i]为NULL时,输出(当你调用函数时)只打印'Product Saved'。

您只是试图将数组中的值传递给该函数,因此请按照以下方式进行操作,并且键的作用无关紧要;

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