Php 递归数组搜索的计数具有奇怪的行为

Php 递归数组搜索的计数具有奇怪的行为,php,arrays,Php,Arrays,我需要数一数有多少个值​​多维数组中存在多个值,请更新计数值 但我有一种奇怪的行为,因为只有一些价值观​​被计算,其他被复制 代码如下: 编辑 代码如下: function recursive_array_search($needle,$haystack) { foreach($haystack as $key=>$value) { $current_key = $key; if($needle===$value || (is_array($val

我需要数一数有多少个值​​多维数组中存在多个值,请更新计数值

但我有一种奇怪的行为,因为只有一些价值观​​被计算,其他被复制

代码如下:

编辑 代码如下:

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key = $key;
        if($needle===$value || (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

$region = array('Emilia Romagna', 'Abruzzo', 'Lombardia', 'Emilia Romagna', 'Abruzzo', 'Abruzzo');
$locality = array('Bologna', 'Bolognano', 'Milano', 'Bologna', 'Bologna');
$dataRegion = array();
$dataLocality = array();

foreach ($region as $result) {
    if($key = recursive_array_search($result, $dataRegion)) {
        $dataRegion[$key]['count']++;
    } else {
        $dataRegion[] = array(
            'type'    => 'region',
            'label'   => $result,
            'count'   => 1,
        );
    }
}

foreach ($locality as $result) {
    if($key = recursive_array_search($result, $dataLocality)) {
        $dataLocality[$key]['count']++;
    } else {
        $dataLocality[] = array(
            'type'    => 'locality',
            'label'   => $result,
            'count'   => 1,
        );
    }
}
print_r($dataLocality);
echo '<br/> ==================== <br/>';
print_r($dataRegion);
函数递归数组搜索($needle,$haystack){
foreach($key=>$value的haystack){
$current_key=$key;
if($needle==$value | |(is_数组($value)&&recursive_数组_搜索($needle,$value)!==false)){
返回$current_键;
}
}
返回false;
}
$region=array('Emilia-Romagna','Abruzzo','Lombardia','Emilia-Romagna','Abruzzo','Abruzzo');
$Location=数组('Bologna'、'Bolognano'、'Milano'、'Bologna'、'Bologna');
$dataRegion=array();
$dataLocality=array();
foreach($结果区域){
if($key=recursive\u array\u search($result,$dataRegion)){
$dataRegion[$key]['count']++;
}否则{
$dataRegion[]=数组(
'类型'=>'区域',
“标签”=>$result,
“计数”=>1,
);
}
}
foreach($result为$locality){
if($key=recursive\u array\u search($result,$dataLocality)){
$dataLocality[$key]['count']++;
}否则{
$DataLocation[]=数组(
'type'=>'locality',
“标签”=>$result,
“计数”=>1,
);
}
}
打印(数据位置);
回声“
======================
”; 打印(数据区域);

我无法解释这种行为的确切原因。

您应该在此处发布代码。
返回false很奇怪)我觉得你的递归很可疑。你的目标到底是什么?另外,既然你的
$region
$locality
是平面的一维数组,为什么你不在数组()中使用内置函数作为
,而更喜欢让你的生活复杂化?;-)不,我不想让我的生活复杂化发布的代码只是我所面临问题的一个有效例子。我得到的数组是嵌套的,是数据库的结果,为了计算结果,我使用了这段代码。