2016-09-04 2 views
1

не могли бы вы сообщить мне, как я могу проверить, имеют ли два массива одинаковые элементы и возвращают true или false независимо от их положения индекса? , как вы можете видеть $a==$b не делает этоКак проверить, имеют ли два массива одинаковые элементы независимо от их положения индекса

$a = array("apple","banana", "strawberry"); 
$b = array("strawberry", "apple","banana"); 
if($a==$b){ 
    echo "yes"; 
}else{ 
echo "no"; 
} 
+0

функция использование array_diff – shikhar

+0

Возможно дубликат [Как проверить, если два индексированные массивы имеют одинаковые значения, даже если заказ не то же самое в PHP?] (Http://stackoverflow.com/questions/6881049/how- to-check-if-two-indexed-array-have-same-values-even-if-the-order-is-not-sam) –

ответ

3

Использование Array Diff:

$a = array("apple","banana", "strawberry"); 
$b = array("strawberry", "apple","banana"); 


$result = array_diff($a, $b); 

if(count($result) > 0){ 
    echo "yes"; 
}else{ 
    echo "no"; 
} 
+0

Нет необходимости сортировать их, если использовать 'array_diff()', что просто избыточно. –

1

Вы можете sort() как массивы, а затем проверить на равенство. Как это:

<?php 

$a=array("apple","banana", "strawberry"); 
$b=array("strawberry", "apple","banana"); 

$a = sort($a); 
$b = sort($b); 
if($a==$b){ 
    echo "yes"; 
}else{ 
echo "no"; 
} 

?> 
+0

код не будет компилироваться .... – Riad

+0

@Riad исправил его, теперь работает –

1

Вы можете использовать array_diff() функции.

$a = array("apple","banana", "strawberry"); 
$b = array("strawberry", "apple","banana"); 
$diff = array_diff($a, $b); 
if(count($diff) > 0){ 
    echo "yes"; 
} 
else{ 
    echo "no"; 
} 
print_r($diff); 

Если $ Diff возвращает пустой массив, это означает, что нет разницы между $ в и $ б.

В противном случае $ diff возвращает элементы, которые являются разными.

Проверьте руководство пользователя, array_diff.

+1

Ваше лучшее решение здесь пока. –

+0

Тогда отметьте ответ как правильно :) – Godiez

+0

Я не ОП, и я выполнил свой ответ. Тем не менее, чтобы завершить его, я бы предложил добавить строку для проверки длины '$ diff' и дать вывод как' yes' или 'no'. В настоящее время это дает только результат 'Array()'. –

3

Просто заключите массив объектов в sort() функции, сравнивая их.

$a = array("apple","banana", "strawberry"); 
$b = array("strawberry", "apple","banana"); 
if(sort($a) == sort($b)){ 
    echo "yes"; 
}else{ 
    echo "no"; 
} 
Смежные вопросы