根据其中一个值取消设置多维数组中的值
Unset a value in a multi-dimensional array based on one of the values
我正在尝试根据找到其中一个值(产品代码)取消多维数组中的一行
这里是稍微简化的 structure/content 数组:
Array ([0] => Array ( [item_id] => code1 [item_desc] => first product [item_price] => 5.45 )
[1] => Array ( [item_id] => code2 [item_desc] => second product [item_price] => 9.25 ))
除了尝试删除数组中的第一项 [0] 时,以下工作正常 - 因此无法删除购物篮中的第一项。
$pid = 'code2';
$key = array_search($pid, array_column($_SESSION['cart_array'], 'item_id'));
if($key) {
unset($_SESSION['cart_array'][$key]);
sort($_SESSION["cart_array"]);
}
其中$pid的值='code1',$key的值returnsfalse,session变量内容不变
我试过使用 foreach 循环,它会找到值,但我似乎无法返回到密钥
foreach ($_SESSION['cart_array'] as $search)
{
if($pid == $search['item_id'])
{
echo key($search); // returns item_id
}
}
非常感谢任何帮助。
我想这就是你想要的。
foreach ($_SESSION['cart_array'] as $key => $search)
{
if($pid == $search['item_id'])
{
echo $key;
}
}
当使用 array_search()
的 return 值时,第一项可能 return 0(如您所知),当您测试 0 时 - 这与 false 相同, 需要检查key不等同于false...
if($key !== false) {
使用更简单的方法:
$_SESSION['cart_array'] = array_filter($_SESSION['cart_array'], function ($item) use ($pid) {
return $item['item_id'] != $pid;
});
此 filters 数组中匹配 $pid
的所有项目。
我正在尝试根据找到其中一个值(产品代码)取消多维数组中的一行
这里是稍微简化的 structure/content 数组:
Array ([0] => Array ( [item_id] => code1 [item_desc] => first product [item_price] => 5.45 )
[1] => Array ( [item_id] => code2 [item_desc] => second product [item_price] => 9.25 ))
除了尝试删除数组中的第一项 [0] 时,以下工作正常 - 因此无法删除购物篮中的第一项。
$pid = 'code2';
$key = array_search($pid, array_column($_SESSION['cart_array'], 'item_id'));
if($key) {
unset($_SESSION['cart_array'][$key]);
sort($_SESSION["cart_array"]);
}
其中$pid的值='code1',$key的值returnsfalse,session变量内容不变
我试过使用 foreach 循环,它会找到值,但我似乎无法返回到密钥
foreach ($_SESSION['cart_array'] as $search)
{
if($pid == $search['item_id'])
{
echo key($search); // returns item_id
}
}
非常感谢任何帮助。
我想这就是你想要的。
foreach ($_SESSION['cart_array'] as $key => $search)
{
if($pid == $search['item_id'])
{
echo $key;
}
}
当使用 array_search()
的 return 值时,第一项可能 return 0(如您所知),当您测试 0 时 - 这与 false 相同, 需要检查key不等同于false...
if($key !== false) {
使用更简单的方法:
$_SESSION['cart_array'] = array_filter($_SESSION['cart_array'], function ($item) use ($pid) {
return $item['item_id'] != $pid;
});
此 filters 数组中匹配 $pid
的所有项目。