通过多个数组数据中的数组值返回数组键

时间:2018-05-25 17:35:50

标签: php arrays

我的$_SESSION以下面的格式存储数组。所有productId值都是唯一的。我想使用productId获取数组键。

Array
(
[0] => Array
    (
        [productId] => 3
        [productQuantity] => 1
    )

[1] => Array
    (
        [productId] => 4
        [productQuantity] => 1
    )

[2] => Array
    (
        [productId] => 5
        [productQuantity] => 1
    )

)

我已经尝试了array_search但它没有用。我实际上看到了一个类似的问题,但答案却不为人知。这是我试过的代码,但它没有显示任何内容:

$key = array_search(3,$_SESSION['cart']);
echo $key;

1 个答案:

答案 0 :(得分:1)

由于它们是唯一的,只需通过productId重新索引:

$cart = array_column($_SESSION['cart'], null, 'productId');
echo $cart[3]['productQuantity'];

或者:

echo array_column($_SESSION['cart'], null, 'productId')[3]['productQuantity'];

如果你只拥有那些2,那么提取productQuantity并按productId重新索引是有意义的:

$cart = array_column($_SESSION['cart'], 'productQuantity', 'productId');
echo $cart[3];

数组看起来像$cart = [3 => 1, 4 => 1, 5 => 1]

或者:

echo array_column($_SESSION['cart'], 'productQuantity', 'productId')[3];

如果由于某种原因你真的只想要当前的密钥,请提取productId并搜索(只要密钥是基于0和顺序的:

$key = array_search(3, array_column($_SESSION['cart'], 'productId'));