我想知道我是否可以解释一下。
我有一个多维数组,我想得到该数组中出现的特定值的计数
下面我展示了数组的片段。我只是检查 profile_type 。
所以我试图在数组中显示 profile_type 的计数
修改
抱歉,我忘了提一些东西,而不是它的主要内容,我需要 profile_type == p
的数量Array
(
[0] => Array
(
[Driver] => Array
(
[id] => 4
[profile_type] => p
[birthyear] => 1978
[is_elite] => 0
)
)
[1] => Array
(
[Driver] => Array
(
[id] => 4
[profile_type] => d
[birthyear] => 1972
[is_elite] => 1
)
)
)
答案 0 :(得分:2)
使用RecursiveArrayIterator轻松解决问题,因此您无需关心维度:
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
$counter = 0
foreach ($iterator as $key => $value) {
if ($key == 'profile_type' && $value == 'p') {
$counter++;
}
}
echo $counter;
答案 1 :(得分:0)
这样的事可能有用......
$counts = array();
foreach ($array as $key=>$val) {
foreach ($innerArray as $driver=>$arr) {
$counts[] = $arr['profile_type'];
}
}
$solution = array_count_values($counts);
答案 2 :(得分:0)
我会做类似的事情:
$profile = array();
foreach($array as $elem) {
if (isset($elem['Driver']['profile_type'])) {
$profile[$elem['Driver']['profile_type']]++;
} else {
$profile[$elem['Driver']['profile_type']] = 1;
}
}
print_r($profile);
答案 3 :(得分:0)
您也可以使用array_walk($ array,“test”)并定义一个函数“test”,它检查数组的每个项目是否为“type”,并为类型的项目递归调用array_walk($ arrayElement,“test”) 'array',否则检查条件。如果条件满足,则递增计数。
答案 4 :(得分:0)
您好您可以从多维数组中获取配置文件类型== p的计数
$arr = array();
$arr[0]['Driver']['id'] = 4;
$arr[0]['Driver']['profile_type'] = 'p';
$arr[0]['Driver']['birthyear'] = 1978;
$arr[0]['Driver']['is_elite'] = 0;
$arr[1]['Driver']['id'] = 4;
$arr[1]['Driver']['profile_type'] = 'd';
$arr[1]['Driver']['birthyear'] = 1972;
$arr[1]['Driver']['is_elite'] = 1;
$arr[2]['profile_type'] = 'p';
$result = 0;
get_count($arr, 'profile_type', 'd' , $result);
echo $result;
function get_count($array, $key, $value , &$result){
if(!is_array($array)){
return;
}
if($array[$key] == $value){
$result++;
}
foreach($array AS $arr){
get_count($arr, $key, $value , $result);
}
}
试试这个..
感谢