Php 关联数组中特定键的数组\计数\值

Php 关联数组中特定键的数组\计数\值,php,arrays,Php,Arrays,假设我有这样一个数组: Array ( [id] => 1 [color_object] => blue [color_1] => green [color_2] => blue [color_3] => blue [color_4] => red [color_5] => purple [AltColor] => blue ) 我可以使用array\u count\u values

假设我有这样一个数组:

Array
(
    [id] => 1
    [color_object] => blue
    [color_1] => green
    [color_2] => blue
    [color_3] => blue
    [color_4] => red
    [color_5] => purple
    [AltColor] => blue
)
我可以使用
array\u count\u values
并将
blue
的计数作为
4

但是我只需要对数组特定键内的值进行计数,在本例中,我需要将计数限制为
color\u 1
color\u 2
color\u 3
color\u 4
color\u 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");

您只需使用函数
array\u sum
将您的
数组\u映射
包装在其中以添加刚刚返回的索引 符合你的条件

$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))
);

您可以只使用函数
数组\u sum
将您的
数组\u映射
包装在其中以添加刚刚返回的索引 符合你的条件

$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))
);

仅使用这些键创建另一个数组。为什么有单独的
color\u 1
color\u 2
等元素?为什么不把它做成一个数组呢?
'colors'=>数组('green'、'blue'、'blue'、'red'、'purple'、'blue')
一般来说,每当你发现自己创建了这样的带编号的变量或键时,你可能应该使用一个数组。我使用的实际数组是从
mysqli\u fetch\u assoc
返回的数组。我试图最小化这个问题,但我认为我对数组的控制不如我的问题所暗示的那么多。你能推荐一个函数引用来研究吗?我想,在这个例子中,使用这些键创建另一个数组可能会起作用。我只是提供了手动创建的PHP代码,以便提供一个代码示例。使用这些键创建另一个数组。为什么有单独的
color\u 1
color\u 2
等元素?为什么不把它做成一个数组呢?
'colors'=>数组('green'、'blue'、'blue'、'red'、'purple'、'blue')
一般来说,每当你发现自己创建了这样的带编号的变量或键时,你可能应该使用一个数组。我使用的实际数组是从
mysqli\u fetch\u assoc
返回的数组。我试图最小化这个问题,但我认为我对数组的控制不如我的问题所暗示的那么多。你能推荐一个函数引用来研究吗?我想,在这个例子中,使用这些键创建另一个数组可能会起作用。我只是提供了手动创建的PHP代码,以便提供一个使用.array\u filter($array,$callback,array\u filter\u USE\u KEY)的代码示例;数组\u过滤器\u使用\u键php版本>=5.6谢谢!不过,我还是在找更简单的。明天我将不得不做更多的研究和工作,届时我将接受一个答案。我使用的实际解决方案在我的原始帖子的评论中,但我将接受你的答案,因为你是第一个为更广泛的问题提供解决方案的人;数组\u过滤器\u使用\u键php版本>=5.6谢谢!不过,我还是在找更简单的。明天我将不得不做更多的研究和工作,届时我将接受一个答案。我使用的实际解决方案在我的原始帖子的评论中,但我将接受你的答案,因为你是第一个为更广泛的问题提供解决方案的人。