我来寻求你们所有聪明的人的智慧!昨天找了一整天,今天又找了几个小时,我放弃了。我尝试了很多方法,但都不起作用,我得出的结论是这个问题超出了我的能力范围。我的php技能很基础,不是很高级。
我用$_SESSION创建了一个简单的购物车。结帐页面向购物车页面提供订单信息,我在本教程的基础上很好地工作了http://keito.me/dynamicweb/11/项通过foreach循环添加到汽车中。
我的问题是我不能删除添加到购物车的项目。我希望使用Remove按钮来删除特定的项目,而不是整个订单。
是否有一种方法来删除数组值的关键?由于每个项目都有一个唯一的密钥号码…到目前为止我还没有找到答案。我所能找到的只有不定式。然而,我找不到一种方法来从一个特定的键取消设置数组。下面是显示和循环条目的代码。
所以我的问题是:它是可能的,我怎么能删除基于键数数组?或者简单地说,我如何删除添加到表中的每个项目。
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>';
}
?>
一个简单的unset($array[$key])就可以了
use unsset($array[$index])这将从数组中删除索引
如果需要从$bananas数组中删除:
$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]);
}
你可以使用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的元素已经被删除了
首先,如果我是你,我不会使用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工具来从删除后的总价格中"推断"出该项目的价格…