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谢谢!不过,我还是在找更简单的。明天我将不得不做更多的研究和工作,届时我将接受一个答案。我使用的实际解决方案在我的原始帖子的评论中,但我将接受你的答案,因为你是第一个为更广泛的问题提供解决方案的人。