如果有两个数组变量包含完全相同的数字(没有重复)但是在位置上拖曳。
输入数组
arr1={1,4,6,7,8};
arr2={1,7,7,6,8};
结果数组
arr2={true,false,false,false,true};
php中是否有一个函数可以获得如上所述的结果,或者只能使用循环(我能做到)来完成。
答案 0 :(得分:3)
您可以使用array_map:
<?php
$arr1= array (1,4,6,7,8) ;
$arr2= array (1,7,7,6,8) ;
function cmp ($a, $b) {
return $a == $b ;
}
print_r (array_map ("cmp", $arr1, $arr2)) ;
?>
输出结果为:
Array
(
[0] => 1
[1] =>
[2] =>
[3] =>
[4] => 1
)
答案 1 :(得分:3)
这是一个很好的array_map()
应用程序和一个匿名回调(好的,我必须承认我喜欢那些闭包; - )
$a1 = array(1,4,6,7,8);
$a2 = array(1,7,7,6,8);
$r = array_map(function($a1, $a2) {
return $a1 === $a2;
}, $a1, $a2);
var_dump($r);
/*
array(5) {
[0]=>
bool(true)
[1]=>
bool(false)
[2]=>
bool(false)
[3]=>
bool(false)
[4]=>
bool(true)
}
*/
是的,你必须以某种方式循环数组。
答案 2 :(得分:1)
完成这项工作的任何方式都必须使用循环元素。没有办法避免循环。
如果你试图攻击这个问题没有问题,即使有一个php函数可以做这样的事情,它也会使用一个循环。
答案 3 :(得分:0)
你可以使用这个http://php.net/manual/en/function.array-diff.php,但它不会返回一个布尔数组。它将返回数组1中的数据不在数组2中。如果这对您不起作用,则必须循环遍历它们。
答案 4 :(得分:0)
有array_diff()
,如果它们都相等,它们将返回一个空数组。
对于您的特定请求,您必须遍历数组并比较每个项目。