我想获得foreach循环中值的计数(总数),它们共享相同的“模型”和“条件”。
为了帮助您更好地理解,以下是我的数据的表示方式
Product Name | Condition
---------------------------------------
iPhone 3G 16GB | Used
iPhone 3G 16GB | Used
iPhone 3G 16GB | New
Blackberry 9900 | New
Blackberry 9900 | New
我目前的foreach循环: -
$results = getProducts();
foreach ($results as $result) {
$data[] = array (
'model' => $result['model'],
'condition' => $result['condition']
);
}
这是我目前的foreach循环所得到的: -
Array (
[0] => Array
(
[model] => iPhone 3G 16GB
[condition] => Used
)
[1] => Array
(
[model] => iPhone 3G 16GB
[condition] => Used
)
[2] => Array
(
[model] => iPhone 3G 16GB
[condition] => New
)
[3] => Array
(
[model] => Blackberry 9900
[condition] => New
)
[4] => Array
(
[model] => Blackberry 9900
[condition] => New
)
)
以下是我想要的方式和内容: -
Array(
'Apple iPhone 3G 16GB' => Array (
'Used' => 2,
'New' => 1
)
'Blackberry 9900' => Array (
'New' => 2
)
)
希望您了解我在这里要完成的任务。如果您希望我提供任何其他信息,请与我们联系。
答案 0 :(得分:2)
这应该会给你想要的结果。
$data = array();
foreach ($results as $result) {
if (!array_key_exists($result['model'], $data)) {
$data[ $result['model'] ] = array(
'Used' => 0,
'New' => 0
);
}
$data[ $result['model'] ][ $result['condition'] ]++;
}
请注意,PHP中的字母索引区分大小写,因此您可能需要添加strtolower()
以避免未定义的索引通知。
答案 1 :(得分:0)
$results = array(
array('model' => 'Apple iPhone 3G 16GB', 'condition' => 'used'),
array('model' => 'Apple iPhone 3G 16GB', 'condition' => 'used'),
array('model' => 'Apple iPhone 3G 16GB', 'condition' => 'new'),
array('model' => 'Blackberry 9900', 'condition' => 'new'),
array('model' => 'Apple iPhone 3G 16GB', 'condition' => 'new'),
array('model' => 'Blackberry 9900', 'condition' => 'used')
);
$data = array();
foreach($results as $result) {
$model = $result['model'];
$condition = $result['condition'];
if(array_key_exists($model, $data)) {
$data[$model][$condition]++;
continue;
}
$data[$model][$condition] = 1;
}
var_dump($data);