Php 使用数组,比较值并求和

Php 使用数组,比较值并求和,php,arrays,Php,Arrays,我有一个购物车系统,它保存在数据库中的json数组中。我想选择所有订单,然后选择该数组中的所有产品id,并在页面上显示最畅销的产品 到目前为止,我能够取出阵列,它看起来是这样的 array(2) { [224]=> array(6) { // data in which I'm not interested } } array(2) { [23]=> array(6) { // data in which I'm no

我有一个购物车系统,它保存在数据库中的json数组中。我想选择所有订单,然后选择该数组中的所有产品id,并在页面上显示最畅销的产品

到目前为止,我能够取出阵列,它看起来是这样的

array(2) { 
    [224]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [23]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1231]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    ["id"]=> string(13) "32" 
}
Array ( 
    [224] => Array ( 
        // data 
    ) 
)
Array ( 
    [23] => Array ( 
        // data 
    ) 
)
....
每个
数组(2){…}
表示一个顺序。我需要这个
[224]
[23]
。。因为这些是产品ID。我的问题是如何知道在循环中选择什么属性

如果是这样的话

array(2) { 
    [224]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [23]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1231]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    ["id"]=> string(13) "32" 
}
Array ( 
    [224] => Array ( 
        // data 
    ) 
)
Array ( 
    [23] => Array ( 
        // data 
    ) 
)
....
我将制作一些类似于
$data->id
的东西来获得
32

这就是我获得阵列的方式

foreach ($products as $item) {
      $data = json_decode($item->details, true);
      echo var_dump($data);
}
感谢您的帮助

更新:使用
打印($data)它们看起来像这样

array(2) { 
    [224]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [23]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    [1231]=> array(6) { 
        // data in which I'm not interested
    } 
}
array(2) { 
    ["id"]=> string(13) "32" 
}
Array ( 
    [224] => Array ( 
        // data 
    ) 
)
Array ( 
    [23] => Array ( 
        // data 
    ) 
)
....

对我来说,这是完全不同的,因为我不知道列的名称,因此我不能使用array_column()

如果$data的键始终是product id,那么在foreach循环中使用php函数key()获取键

foreach($products as$item){
$data=json_decode($item->details,true);
回显键($data)。“
”; //或者创建一个数组来存储所有产品ID $product_ids[]=密钥($data); } 回声“; 打印(产品标识); //统计每个产品id $product\U ID\U count=数组\U count\U值($product\U ID); //获取最常用的产品id echo$most\u used\u product\u id=array\u search(最大($product\u id\u count),$product\u id\u count);
您可以使用数组键,它将列出数组中的所有键。

$products数组将保存您的值224、23等等

使用此$products数组,您可以从原始数组中获取如下值:

我刚补偿了费用,但你明白了。

以上内容与
$array[“224”][“cost”]

相同,而不是var\u dump,你能回显print\u r($data)吗?@RavinderReddy我已经用输出更新了我的问题,如果你知道产品id始终是第一个元素,那么展示了如何获取它。尝试使用key()函数。@Martijn这是完全不同的,因为我不知道列的名称。是的,我现在在
数组中有它们([0]=>224[1]=>23…
)。既然我现在有了它们,是否可以进行计数并显示最常用的ID?谢谢您的回答,有其他选项很好,但这也显示了输出上的一些其他值。@user5996816是否显示了值?它应该只提供数组的键。你确定你已经按照问题中的方式设置了数组吗?是的,它与问题中的设置完全相同,但我还有其他值。我对它们不感兴趣,试试看这是不是因为重复的名字还是什么
$products1234=array\u key($array)
和var dump thar数组和post值数组键不构成值。它从数组中获取密钥。正如你从我的答案中的链接中看到的,它是有效的。你的原始数组一定有问题,否则我不知道是什么。还可以转储您的数组。让我们看看这些值。