2014-11-25 114 views
0

我確定這只是一個語法問題,因爲其他所有工作。從多維數組中刪除一個元素

首先我創建一個嵌套的多維,作爲跨多個頁面的會話變量保存。

if(isset($_POST["submit_1"])){ 
    $quantity = $_POST['quantity']; 
    $name = $_POST['name']; 
    $size = $_POST['size']; 
    $p = $_POST['price']; 
    $price = $p * $quantity; 
    $item_array = array(0 => array('i_quantity' => $quantity, 'i_name' => $name,'i_size' => $size, 'i_price' => $price)); 
    $_SESSION["item"][] = $item_array; 
} 

然後調用用於我的所有項目的代碼,創建一個表格按鈕和I創建陣列ID變量只是爲了給陣列在多個啓動-1以使陣列開始於0;

<?php 
$arrayID = -1; 
if(empty($_SESSION["item"])){?> 
<?php } 
else{  
    // add a foreach loop to display all the session items, if exsited. 
    foreach($_SESSION['item'] as $key){ 
    foreach($key as $list){ 
    $arrayID += 1; 
    //displays all the items here 
    <form method="POST"> 
     <input type="submit" name="remove">    
    </form> 
    }}} 
    ?> 

所有項目出現在頁面上,他們應該,現在我想是使用該表單按鈕,相應的刪除按鈕來取消特定的循環數組項。

下面是我最好的猜測。

if(isset($_POST["remove"])){ 
    unset($_SESSION["item"][$arrayID]); 
    } 

我已經把它放在for循環裏面,目前還沒有運氣。嘗試了幾個其他選項,根據其他堆棧溢出建議將$ arrayID更改爲$ key和$ list,但沒有運氣。我認爲我的問題是它是一個嵌套數組,只是不知道調用特定項目的語法以及如何將其鏈接到按鈕函數。

任何建議非常感謝。

回答

0

您可以使用索引添加隱藏字段以確定它是哪個會話索引。之後,您可以使用該變量來取消設置會話。

更改您的foreach的外觀是這樣的:

<?php 
$arrayID = -1; 
if(empty($_SESSION["item"])){?> 
<?php } 
else{  
    // add a foreach loop to display all the session items, if exsited. 
    foreach($_SESSION['item'] as $key){ 
    foreach($key as $list){ 
    $arrayID += 1; 
    //displays all the items here 
?> <!-- Close PHP tag !--> 
    <form method="POST"> 
     <input type="submit" name="remove">  
     <input type="hidden" name="removeIndex" value="<?=$arrayId?>">       
    </form> 
<!-- Re-open PHP tag !--><?php 
    }}} 
    ?> 

而且你的PHP代碼,趕上刪除事件是這樣的:

if(isset($_POST["remove"])){ 
unset($_SESSION["item"][$_POST["removeIndex"]]); 
} 

還要注意密切和開放的PHP標籤我添加。您不能在沒有回顯或關閉PHP標籤的情況下在PHP中顯示某些內容。

+0

謝謝你,抱歉沒有包含php的具體細節。我確實有他們全部。 – Paddy 2014-11-25 12:20:10