我有购物车系统,保存在数据库中的json数组中。我想选择所有订单,然后选择此数组中的所有product_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) {...}
代表一个订单。我需要这个[224]
,[23]
..因为这些是产品ID。我的问题是如何知道在循环中选择哪个属性?
如果是这样的话
array(2) {
["id"]=> string(13) "32"
}
我会制作类似$data->id
的内容来获取32
这就是我得到阵列的方式
foreach ($products as $item) {
$data = json_decode($item->details, true);
echo var_dump($data);
}
感谢任何帮助。
更新:print_r($data);
他们看起来像这样
Array (
[224] => Array (
// data
)
)
Array (
[23] => Array (
// data
)
)
....
对我而言,这完全不同,因为我不知道列的名称因此我不能使用array_column()
答案 0 :(得分:1)
如果$ data的键始终是产品ID,那么在foreach循环中使用php function key()获取密钥。
foreach ($products as $item) {
$data = json_decode($item->details, true);
echo key($data)."</br>";
//OR Create an array to store all the product ids
$product_ids[] = key($data);
}
echo "<pre>";
print_r($product_ids);
// to count each product id
$product_ids_count = array_count_values($product_ids);
//get the most used product id
echo $most_used_product_id = array_search(max($product_ids_count),$product_ids_count);
答案 1 :(得分:0)
您可以使用array_keys列出数组中的所有键 http://php.net/manual/en/function.array-keys.php
$products = array_keys($array);
$ products数组将保存您的值224,23,依此类推。
使用此$ products数组,您可以从原始数组中获取值,如下所示:
$array[$product[0]]["cost"]
我只是弥补了成本,但你明白了。
以上内容与$array["224"]["cost"]