可能的重复项:
使用 PHP 查找多个数组中的通用值
我有两个具有相同索引的数组,例如,
$a=Array
(
[2013-01-15] => Array
(
[0] =>1001
[1] => 1002
[2] => 1003
[3] => 1004
[4] => 1005
[5] => 1006
[6] => 1007
)
and
$b=Array
(
[2013-01-15] => Array
(
[0] =>1001
[1] =>
[2] => 1003
[3] =>
[4] =>
[5] => 1007
[6] =>
)
现在我想比较这些数据,并找出有多少相同的元素。在这种情况下,有三个共同点。
使用 array_intersect
$result = array_intersect($a['2013-01-15'], $b['2013-01-15']);
手册中的示例:
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
Array
(
[a] => green
[0] => red
)
你知道PHP array_intersect
函数吗?这可能是你要找的...
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() retourne un tableau contenant toutes les valeurs de array1 qui sont présentes dans tous les autres arguments array2, ..., etc. Notez que les clés sont préservées.
不过,您将需要一个平面数组。你可以看看如何做到这一点的问题:如何展平一个多维数组?
在您的情况下,如果您的数组始终由数组值组成,并且您需要计算这些值中的重复项:
$a = array( '2012-04' => array( 10, 50, 60, 80 ) );
$b = array( '2012-04' => array( 10, 40, 80 ) );
$count = 0;
foreach ( $a as $key => $array1 ) {
if ( array_key_exists( $key, $b ) ) {
$array2 = $b[ $key ];
$count += count( array_intersect( $array1, $array2 ) );
}
}