Php 是否用特定id替换阵列?
我有这个阵列:Php 是否用特定id替换阵列?,php,arrays,multidimensional-array,replace,Php,Arrays,Multidimensional Array,Replace,我有这个阵列: Array ( [cart] => Array ( [0] => Array ( [id] => 1 [size] => XS [count] => 1 ) [1] => Array
Array
(
[cart] => Array
(
[0] => Array
(
[id] => 1
[size] => XS
[count] => 1
)
[1] => Array
(
[id] => 2
[size] => XS
[count] => 1
)
)
)
例如,在这个多维数组中,如何用id 2替换数组
我正在建立一个网上商店系统,想把T恤衫加入购物车。如果要再次添加已添加的项目,则应使用新输入(新大小、新计数)替换购物车会话变量
我如何检查是否已经添加了特定id 给定包含n个产品的$cart和$article作为要添加的新文章:
$c = count($cart);
for($i=0;$i<$c;$i++) {
if ($cart[$i]['id'] == $article['id']) {
$cart[$i] = $article;
}
}
我不确定你到底在找什么,但我想这就行了
foreach ($array['cart'] as &$item) {
if ($item['id'] == $_POST['id']) {
$item = $_POST;
}
} unset($item);
由于每个产品都有自己的唯一id,因此可以使用产品id作为数组中的索引,然后可以执行以下操作:
// pseudo code
function add2Cart($product_id, $count, $size) {
global $cart;
$cart[$product_id] = array(
'count' => $count,
'size' => $size
);
)
然后您将有一个如下所示的数组:
[cart] => Array
(
[1] => Array
(
[size] => XS
[count] => 1
)
[2] => Array
(
[size] => XS
[count] => 1
)
)
其中,每个索引都是一个产品id号。正如我所说:具有新内容,如新大小、新计数,但id相同。首先,我必须检查数组中是否存在特定id。我必须这样做foreach循环还是我可以更简单地检查它?如果你也需要修改它,这可能是最简单的方法释放由
和$item
创建的引用。Php不会自动销毁它。看全球!他没有像我说的那样使用id作为密钥,这只是一个伪代码,让他知道如何继续。另外,我说他可以使用产品id作为密钥。如果我使用id作为密钥会是什么样子?@KristerAndersson不使用globals这根本不是一个好做法!你在教学,请用好practices@mcuadros-你好像没读我的帖子?我想说明一种方法是使用产品id号作为索引。我还为我的示例编写了pseudo
代码。我不认为stackoverflow是为其他人编写代码。当然,您不应该像上面的示例那样使用global
。首先,我必须检查数组中是否有特定的id。我必须执行这个foreach循环吗?或者我可以更简单地检查它吗?您必须foreach yes,或者您必须将id设置为数组的键,然后只使array_key_存在或简单地设置为isset
[cart] => Array
(
[1] => Array
(
[size] => XS
[count] => 1
)
[2] => Array
(
[size] => XS
[count] => 1
)
)