php数组按索引比较索引

发布于 2024-11-28 16:31:31 字数 272 浏览 1 评论 0原文

如果有两个数组变量包含完全相同的数字(不重复)但位置被打乱。

输入数组

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

结果数组

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

php中是否有函数可以获取上述结果,或者应该仅使用循环来完成(我可以这样做)。

If there are two array variable which contains exact same digits(no duplicate) but shuffled in position.

Input arrays

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

Result array

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

Is there a function in php to get result as above or should it be done using loop(which I can do) only.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

氛圍 2024-12-05 16:31:31

这是一个很好的应用程序 array_map()< /a> 和一个匿名回调(好吧,我必须承认我喜欢这些闭包;-)

$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)
}
*/

是的,你必须以某种方式循环数组。

This is a nice application for array_map() and an anonymous callback (OK, I must admit that I like those closures ;-)

$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)
}
*/

And yes, you have to loop over the array some way or the other.

两个我 2024-12-05 16:31:31

您可以使用 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
)

You could use 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)) ;
?>

The output is:

Array
(
    [0] => 1
    [1] =>
    [2] =>
    [3] =>
    [4] => 1
)
彩虹直至黑白 2024-12-05 16:31:31

完成这项工作的任何方式都必须使用循环元素。没有办法避免循环。

无论你如何尝试解决这个问题,即使有一个 php 函数可以做这样的事情,它也会使用循环。

Any way this job is done must be using looping the elements. There is no way to avoid looping.

No metter how you try to attack the problem and even if there is a php function that do such thing, it uses a loop.

尹雨沫 2024-12-05 16:31:31

你可以使用这个 http://php.net/manual/en/function.array -diff.php,但它不会返回布尔数组。它将返回数组 1 中不在数组 2 中的数据。如果这对您不起作用,您将不得不循环遍历它们。

You could use this http://php.net/manual/en/function.array-diff.php, but it will not return an array of booleans. It will return what data in array 1 is not in array 2. If this doesn't work for you, you will have to loop through them.

梦醒灬来后我 2024-12-05 16:31:31

array_diff() 它将如果它们相等,则返回一个空数组。

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

there's array_diff() which will return an empty array in case they are both equal.

For your spesific request, you'll have to iterate through the arrays and compare each item.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文