我正在处理一个购物车项目,有一个$_SESSION ['productSummary']数组,如下所示。
[productSummary] => Array
(
[0] => Array
(
[name] => Individual Coins
[code] => 8774
[IDs] => Array
(
[0] => 8774
[1] => 8775
[2] => 8778
[3] => 8765
)
[pluID] => 6105
[qty] => 4
[finalPrice] => 0.0000
[listPrice] => 0.0000
[shipping] => 0.0000
)
[1] => Array
(
[name] => Business Package - 5,000
[code] => 8770
[IDs] => Array
(
[0] => 8770
)
[pluID] => 6087
[qty] => 1
[finalPrice] => 125.0000
[listPrice] => 125.0000
[shipping] => 0.0000
)
)
当用户希望从购物车中删除商品#8778时,我需要找到“8778”的索引键值,以便从ID数组中删除该值。
这是我目前为止所拥有的代码片段。我为$matchingKey获得了很好的值,但是$matchingKey2总是空的。
// Find the key for the parent array
$matchingKey = array_search(8778, array_column($_SESSION["productSummary"], 'IDs'));
// Find the key for the element in the nested IDs array
$matchingKey2 = array_search(8778, array_column($_SESSION['productSummary'][$matchingKey]['IDs']));
// If it found a match, unset that element
if(!empty($matchingKey2)) {
unset($_SESSION["productSummary"][$matchingKey]['IDs'][$matchingKey2]);
}
// Reindex the array
$_SESSION["productSummary"][$matchingKey]['IDs'] = array_values($_SESSION["productSummary"][$matchingKey]['IDs']);
我还以为
$matchingKey2 = array_search(8778, array_column($_SESSION['productSummary'][$matchingKey]['IDs']));
在本例中返回值2,但if返回NULL
1条答案
按热度按时间nue99wik1#
不能使用
array_search()
搜索嵌套数组。请使用普通的foreach
循环。还需要注意的是,不能使用
!empty($matchingKey2)
来判断是否找到了条目,如果条目是数组中的第一个元素,则$matchingKey2
将为0
,它被认为是空的,必须使用与false
的严格比较。