2011-09-25 101 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; 

雖然我推薦第一個選項。