使用数组,比较值并求和

时间:2017-07-19 14:15:31

标签: php arrays

我有购物车系统,保存在数据库中的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()

2 个答案:

答案 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,依此类推。

https://3v4l.org/PEjfH

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

$array[$product[0]]["cost"]

我只是弥补了成本,但你明白了。
以上内容与$array["224"]["cost"]

相同