我们说我有一个这样的数组:
Array
(
[id] => 1
[color_object] => blue
[color_1] => green
[color_2] => blue
[color_3] => blue
[color_4] => red
[color_5] => purple
[AltColor] => blue
)
我可以使用array_count_values
,它会将blue
计为4
。
但是我只需要计算数组中特定键的值,在这个例子中我需要将我的计数限制为color_1
color_2
color_3
color_4
和仅color_5
。
是否可以仅计算指定键中blue
的实例,为我提供2
所需的结果?
PHP代码:
$array = array("id"=>"1", "color_object"=>"blue", "color_1"=>"green", "color_2"=>"blue", "color_3"=>"blue", "color_4"=>"red", "color_5"=>"purple", "AltColor"=>"blue");
答案 0 :(得分:2)
<?php
$array = array(
"id"=>"1",
"color_object"=>"blue",
"color_1"=>"green",
"color_2"=>"blue",
"color_3"=>"blue",
"color_4"=>"red",
"color_5"=>"purple",
"AltColor"=>"blue"
);
$preg = '/^color_\d{1,}/i';
$callback = function ($val) use($preg) {
if (preg_match($preg, $val, $match)) {
return true;
} else {
return false;
}
};
$data = array_filter($array, $callback, ARRAY_FILTER_USE_KEY);
$result = array_count_values($data);
var_dump($result);
答案 1 :(得分:1)
你可以使用函数array_sum
将array_map
包装在其中以仅添加返回索引
符合你的条件
$array = Array
(
'id' => 1,
'color_code' => 'blue',
'color_1' => 'green',
'color_2' => 'blue',
'color_3' => 'blue',
'color_4' => 'red',
'color_25' => 'purple',
'AltColor' => 'blue',
);
echo "The total count is of index => color and value => blue is ".array_sum(array_map(
function($value, $key) {
return (preg_match('/^color_\d{1,}/i', $key) && $value == 'blue') ? true : false;
}, $array, array_keys($array))
);