如何根据键号删除数组的值.这可能吗?


How to delete the values of an array by key number. Is it even possible?

我来寻求你们所有聪明的人的智慧!昨天找了一整天,今天又找了几个小时,我放弃了。我尝试了很多方法,但都不起作用,我得出的结论是这个问题超出了我的能力范围。我的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工具来从删除后的总价格中"推断"出该项目的价格…