2011-08-13 25 views
2

forループを使用して反復処理している配列があります。配列には、関数の引数として渡す必要がある各要素にURLがあります。forとforeachループの呼び出し関数がPHPで失敗する

繰り返し中に関数を呼び出すと、ループは最初の反復後に停止し、配列全体に渡って進まなくなります。

配列の値だけをエコーアウトしようとしたときにループ内で関数を呼び出さないと正常に動作しません。

これは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 items 私が関数呼び出しをコメントし、関数の後に次の行だけをエコーアウトすると、出力されたすべての反復が表示されます。 – 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>'; 
関連する問題