PHP - 基于其他数组的Count数组

时间:2014-03-10 21:47:49

标签: php arrays

我有这样的数组

$array1 = array(Array('b','d'), 
                Array('c','a'),
                Array('b','d'),
                Array('a','d'),
                Array('c'),
                Array('c'),
                Array('a','d','e'),
                Array('d','b')
                 );

$array2 = array(array('c'),array('a','d'), array('b','d'), array('a,','d','e')) ;
$result = array();

这是我的代码:

    foreach ($array2 as $part) {
        $key = implode(', ', $part);
        if( ! array_key_exists ($key, $array1)) {
            $result[$key] = 0;
        }
        $result[$key] = $result[$key] + 1;
    }
    foreach ($result as $key => $value) {
        echo "$value of {$key}<br/>";   
    }

我想根据$ array1计算值$ array2 我得到了这个:

1 of c      
1 of a, d
1 of b, d  
1 of a, d, e

但我想要一个这样的结果:

3 of c      
2 of a, d
2 of b, d  
1 of a, d, e  

如果有人想知道为什么会有(2个,d),那么array('a','d')array('a','d','e')

1 个答案:

答案 0 :(得分:0)

此代码应该有效:

$result = array();
$array1 = array(
    array('b','d'), 
    array('c','a'),
    array('b','d'),
    array('a','d'),
    array('c'),
    array('c'),
    array('a','d','e'),
    array('d','b')
);
$array2 = array(
    array('c'),
    array('a','d'),
    array('b','d'),
    array('a,','d','e')
);

foreach ($array2 as $part) {
    $key = implode(', ', $part);
    if(!array_key_exists ($key, $array1)) {
        $result[$key] = 0;
    }
    foreach($array1 as $data) {
        $dataKey = implode(', ', $data);
        if(strpos($dataKey, $key) > -1) {
            $result[$key]++;
        }
    }

}
foreach ($result as $key => $value) {
    echo "$value of {$key}<br/>";   
}

它产生的结果是:

3 of c
2 of a, d
2 of b, d
0 of a,, d, e

注意0 of a,, d, e。这是由$array2 - array('a,','d','e')

中的拼写错误引起的