我有一個網頁,允許用戶添加特定記錄作爲'Favorite' - 作爲此過程的一部分,它將選擇記錄ID添加到數組中,如下所示:PHP Array - 刪除項目和後續數組循環
array_push($_SESSION['selectedArticleIDs'], $recid);
,他們也未收藏夾記錄從陣列中刪除它們:
if (($key = array_search($recid, $_SESSION['selectedArticleIDs'])) !== false) {
unset($_SESSION['selectedArticleIDs'][$key]);
}
因此,該陣列可能是這樣的:
[selectedArticleIDs] => Array
(
[0] => 1398
[2] => 851
[3] => 1635
[4] => 65
[5] => 860
)
然後我做了查找到組中的所有選擇的收藏夾成一個列表如下:
for($i = 0; $i < count($_SESSION['selectedArticleIDs']); $i++) {
${'findreq' . ($i+1)} = $fm->newFindRequest('Articles');
${'findreq' . ($i+1)}->addFindCriterion('RecordID', $_SESSION['selectedArticleIDs'][$i]);
$request->add($i+1, ${'findreq' . ($i+1)});
}
出現該問題,當有人未最愛的項目 - 你可以在上面的例子看有沒有:
[1] => 1234
數組項,在執行查找時拋出for循環,因爲它跳過數組中的最後一項(上例中的860
)。
我可以看到問題在這裏,但不知道如何去解決這個問題?
http://php.net/manual/en/control-structures.foreach.php –
而不是'unset',你應該考慮使用['array_splice'](http://php.net/array-splice ),以便鍵可以重新編號。 –