Индекс сравнения массива php по индексу - PullRequest
0 голосов
/ 05 августа 2011

Если есть две переменные массива, которые содержат точно такие же цифры (без дубликатов), но перетасованы в позиции.

Массивы ввода

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

Массив результатов

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

Есть ли в php функция для получения результата, как указано выше, или она должна выполняться только с помощью цикла (что я могу сделать).

Ответы [ 5 ]

3 голосов
/ 05 августа 2011

Это хорошее приложение для 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)
}
*/

И да, вы должны циклически перебирать массив так или иначе.

3 голосов
/ 05 августа 2011

Вы можете использовать массив_карт:

<?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 голос
/ 05 августа 2011

Любой способ выполнения этой работы должен заключаться в использовании циклических элементов. Нет способа избежать зацикливания.

Не знаю, как вы пытаетесь атаковать проблему, и даже если есть функция php, которая делает это, она использует цикл.

0 голосов
/ 05 августа 2011

есть array_diff(), который вернет пустой массив в случае, если они оба равны.

Для вашего специального запроса вам придется перебирать массивы и сравнивать каждый элемент.

0 голосов
/ 05 августа 2011

Вы можете использовать это http://php.net/manual/en/function.array-diff.php,, но оно не будет возвращать массив логических значений. Он вернет, какие данные в массиве 1 не находятся в массиве 2. Если это не сработает для вас, вам придется пройти через них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...