依靠递归数组搜索有奇怪的行为

时间:2014-02-17 20:16:47

标签: php arrays

我需要计算多维数组中有多少个值并更新计数值。

但是我得到了一个奇怪的行为,因为只计算了一些值,其他值都是重复的。

这里的代码: phpfiddle

修改 代码如下:

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

我无法解释为什么会出现这种行为..

0 个答案:

没有答案