我有一个网页,允许用户添加特定记录作为'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 ),以便键可以重新编号。 –