2011-09-25 134 views
0

我创建了一个名单特征,它有点像购物车。 I输出的候选名单中的项目的条件:输出一个数组

$i = 0; 
while ($i < $countArray){ 

echo $_SESSION['shortlistArray'][$i]." <a href='shortlistRemoveItem.php?arrayID=$i'>[x]</a><br />"; 

$i++; 
} 

和删除项目由

$arrayID = $_GET["arrayID"]; 
unset($_SESSION['shortlistArray'][$arrayID]); 

的问题是,当我从一个阵列,例如$ _SESSION删除项目[“shortlistArray”] [ 2]输出全部混乱,因为阵列不是孤立的顺序。我应该重新编码数组的输出方式还是我从数组中删除项目的方式?

+1

也许你应该使用FOR instaad的WHILE?还可以尝试VAR_DUMP($ _ SESSION ['shortlistArray'])以确保删除前没有问题。 –

回答

1

最有效的解决办法是简单地改变你的阵列输出方式:

foreach($countArray as $key => $item){ 

    echo $_SESSION['shortlistArray'][$key]." <a href='shortlistRemoveItem.php?arrayID=$key'>[x]</a><br />"; 
} 

如果硬要改变你从阵列中删除项目的方式,考虑这个选择:

$arrayID = $_GET["arrayID"]; 
$tempArray = array(); 

foreach($countArray as $key => $item){ 

    if($arrayID == $key) continue; 
    $tempArray[] = $item; 
} 

$_SESSION['shortlistArray'] = $tempArray; 

虽然我推荐第一个选项。