php数组比较索引的索引

时间:2011-08-05 19:39:05

标签: php arrays comparison

如果有两个数组变量包含完全相同的数字(没有重复)但是在位置上拖曳。

输入数组

arr1={1,4,6,7,8};
arr2={1,7,7,6,8};

结果数组

arr2={true,false,false,false,true};

php中是否有一个函数可以获得如上所述的结果,或者只能使用循环(我能做到)来完成。

5 个答案:

答案 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(),如果它们都相等,它们将返回一个空数组。

对于您的特定请求,您必须遍历数组并比较每个项目。

相关问题