Я просто добавляю это, поскольку это код, который у меня уже был, и он делает то, что вы хотите.Я думаю, что это немного более универсально, чем другой ответ.
Это может искать:
- Строка против строки
- Строка против массива строк
- Массив строк против другого массивастрок
- Массив строк против строки.
Возвращает массив с вашими иглами в качестве ключей и true или false в качестве значения, в зависимости от того, был он найден или нет.
Вы можете добавить третий параметр для изменения разделителя, если вам нужно что-то еще, кроме тире.
<?php
$ar = ['01-05-24-30-35-36', '25-27-32-34-37-42', '11-17-18-22-33-41'];
$ar2 = ['01-05-24-30-35-36', '05-30-01-36-35-24', '01-05-24-30-35-33'];
var_dump(sortAndMatch($ar2, $ar));
/*
* array (size=3)
* '01-05-24-30-35-36' => boolean true
* '05-30-01-36-35-24' => boolean true
* '01-05-24-30-35-33' => boolean false
*/
/*
* Sort 2 strings or arrays of strings and try to find $needles into $haystack.
* Returns array($needle => bool);
* $array[$needle] is true when it's found.
* $array[$needle] is false when it isn't.
*/
function sortAndMatch($needles, $haystack, $delimiter = '-'){
//Sort haystack
foreach ((array)$haystack as $k => $combination){
$haystack[$k] = explode($delimiter, $combination);
sort($haystack[$k]);
}
//Sort and compare needles, builds $results
foreach((array)$needles as $k => $needle){
$needle= explode($delimiter, $needle);
sort($needle);
$results[$needles[$k]] = false;
if(array_search($needle, $haystack) !== false){
$results[$needles[$k]] = true;
}
}
return $results;
}