2013-05-17 42 views
0

我一直在寻求所有智慧聪明的人的智慧!昨天看了整天,今天几个小时后我放弃了。我尝试了很多东西,但都没有成功,我得出的结论是这个问题超出了我的技能。我的PHP技能是非常基本的,不是很先进。如何通过键号删除数组的值。它甚至有可能吗?

我用$ _SESSION创建了一个简单的购物车。结帐页面将订单信息提供给购物车页面,根据本教程,我可以很好地工作http://keito.me/dynamicweb/11/

通过foreach循环将项目添加到汽车。

我的问题是我无法删除添加到购物车的物品。我想要删除按钮删除该特定项目,而不是整个订单。

有没有办法通过键删除数组值?因为每个项目都有一个唯一的密钥编号..迄今为止,我找不到答案。我所能找到的所有东西都没有设置。但是我找不到从特定键中取消设置数组的方法。这是显示和循环项目的代码。

所以我的问题是:这是可能的,我怎样才能删除一个数组基于关键号码?或者只是简单地说,我如何删除添加到表中的每个项目。

if (!isset($_SESSION['cart']) || (count($_SESSION['cart']) == 0)) { 
    echo '<p>Your cart is empty.</p>'; 
} else { 

echo '<table id="myTable" width="100%" border="1" cellpadding="3" cellspacing="1"> 
<tr><th>Door Model</th><th>Door Size</th><th>Door Information</th><th>Quantity</th>  <th>Subtotal</th></tr>'; 
    $total = 0; 

    $bananas = $_SESSION['cart']; 
    foreach($bananas as $key =>$item) { 

echo "<tr><td align='center' width='10%' valign='top'>{$item['1']} 
    </td><td width='10%' align='center' valign='top'>{$item['2']}</td> 
    <td valign='top'>{$item['4']} 
    <form method='post' action='{$_SERVER['PHP_SELF']}'> 
    <p>Key = $key Item = $item</p> 
    <input name='submited$key' type='submit' value='Remove' /> 
    </form> 
    <p><a href='unset.php'>Remove</a> <a href='#'>Edit</a></p></td> 
    <td align='center' valign='top' cellpadding='3' width='5%'>{$item['3']}</td> 
    <td width='10%'align='center' valign='top'>$".number_format($item['6'] * $item['3'],2)."</td></tr>"; 

    $total += ($item['6'] * $item['1']); 

    } 

echo "<tr><th colspan='5' scope='row'><p style='float: right'><strong>Grand total: </strong>\$".number_format($total, 2);"</p></th></tr>";  
echo '</table>'; 


    } 
?> 

回答

0

一个简单的未设置($ array [$ key])应该能够做到这一点。

但是,它不适用于传递引用值。

0

使用unsset($ array [$ index])这将从数组中删除索引。

0

,如果你需要从$删除香蕉阵列:

$bananas = $_SESSION['cart']; 

foreach($bananas as $key => $item) { 
    // do something with $bananas[$key] 
    unset($bananas[$key]); 
} 

,如果你需要从会议中删除:

$bananas = $_SESSION['cart']; 

foreach($bananas as $key => $item) { 
    // do something with $bananas[$key] 
    unset($_SESSION['cart'][$key]); 
} 
0

您可以使用ArrayIterator此: -

$array = array('zero', 'one','two','three','four','five','six','seven'); 
$iterator = new \ArrayIterator($array); 
var_dump($iterator); 
$iterator->offsetUnset('3'); 
var_dump($iterator); 

输出: -

object(ArrayIterator)[1] 
    string 'zero' (length=4) 
    string 'one' (length=3) 
    string 'two' (length=3) 
    string 'three' (length=5) 
    string 'four' (length=4) 
    string 'five' (length=4) 
    string 'six' (length=3) 
    string 'seven' (length=5) 

object(ArrayIterator)[1] 
    string 'zero' (length=4) 
    string 'one' (length=3) 
    string 'two' (length=3) 
    string 'four' (length=4) 
    string 'five' (length=4) 
    string 'six' (length=3) 
    string 'seven' (length=5) 

正如你所看到的索引为3的元素已被删除。

0

首先,如果我是你,我不会使用PHP,PHP将需要重新加载才能工作,尽管你可以使用一个非常简单的JQuery字符串来为你完成工作,需要刷新页面,
只是声明了一个特定的ID(或类)的“清除按钮”,然后使用这个简单的脚本目标是ID:

<script> 
$(function() { 
$('a#delete_row').live('click', function() { 
    $(this).parent().parent().parent().animate({ backgroundColor: "#ffcece" }, 'fast' , function() { 
     $(this).fadeOut(function() { 
       $(this).remove(); 
     }); 
    }); 
    }); 
}); 
</script> 

这将删除该表项与漂亮图形声明,并将其从DOM树中拉出,以便在发布表单时实际删除它“不仅仅是隐藏”。

注:我使用的(Live)的选择,使其动态更新每当车越来越大,
你需要其他的JQuery的东西从总计后“演绎”这个项目的价格去除...

相关问题