2014-11-25 5 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; 
} 

Тогда я называю этот код для всех моих вещей, создать кнопки формы и я создать переменную 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

Вы можете добавить скрытое поле с индексом, чтобы определить, какой индекс сессии он есть. После этого вы можете использовать переменную для отмены сеанса.

Изменить Еогеасп взгляд на что-то вроде этого:

<?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

Смежные вопросы