我如何比较PHP中的2个数组,以找出每个数组共有的值。
示例
数组1
Array
(
[0] => ace
[1] => one
[2] => five
[3] => nine
[4] => elephant
)
数组2
Array
(
[0] => elephant
[1] => seven
[2] => ace
[3] => jack
[4] => queen
)
输出 排列 ( [0] =>高手 [1] =>象 )
答案 0 :(得分:3)
array_intersect功能可以做到这一点。
答案 1 :(得分:0)
PHP有一个array_intersect()函数可以做到这一点。例如,ypo可以将以下代码放入PHPFiddle中进行测试:
<?php
$array1 = array('ace', 'one', 'five', 'nine', 'elephant');
$array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');
print_r($array1); print('<br>');
print_r($array2); print('<br>');
print_r(array_intersect($array1, $array2)); print('<br>');
?>
然后您会看到它可以满足您的要求(经过重新格式化以提高可读性):
Array ( [0] => ace
[1] => one
[2] => five
[3] => nine
[4] => elephant )
Array ( [0] => elephant
[1] => seven
[2] => ace
[3] => jack
[4] => queen )
Array ( [0] => ace
[4] => elephant )
请注意,这实际上并没有为您提供连续键,该键似乎来自给定array_intersect()
的第一个数组。如果获取连续索引的数组很重要,则可能需要后处理步骤才能对其进行调整。这样的事情应该是一个好的开始(修改原始小提琴以使用连续索引):
<?php
$array1 = array('ace', 'one', 'five', 'nine', 'elephant');
$array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');
print_r($array1); print('<br>');
print_r($array2); print('<br>');
$array3 = array();
foreach (array_intersect($array1, $array2) as $val) {
array_push($array3, $val);
}
print_r($array3); print('<br>');
?>
答案 2 :(得分:-1)
如果你的语言中没有内置交集,但你有哈希,你只需将一个数组的所有元素添加到哈希中,然后通过第二个数组检查它们是否在你刚建立的哈希。
如果您不关心订单,这就是全部。如果您关心订单,它只是一个for循环,看看是否[i] == b [i]