PHP - 基于另一个数组的count数组(array('和')= array('d','a'))

时间:2014-03-11 03:47:01

标签: php arrays

我有这样的数组:

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

$array2 = array(array('a','d'), array('a','b','c','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/>";   
    }

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

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

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

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

如果有人想知道为什么会有(3个,d个),则从array('a','d')计算,array('d','a')也计为array('a','d')array('a','b','c','d','e')

1 个答案:

答案 0 :(得分:1)

试试这个。这是一个有效的演示https://eval.in/117810

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

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

foreach ($array2 as $key=>$part2) {
    sort($part2);
    if(!isset($result[$key]))$result[$key]=0;
    foreach($array1 as $part1) {
        $intersect = array_intersect($part1, $part2);
        sort($intersect);
        if ($intersect === $part2) {
            $result[$key]++;
        }
    }
}

foreach($result as $k=>$v) {
    echo $v . " of " . implode(',', $array2[$k]) . "<br/>"; 
}

?>