Я получил ваши логики c после многократного просмотра вашего входного массива, а также вывода на основе заданных чисел.
Поскольку я не очень хорош в регулярном выражении, я буду go, чтобы узнать ответ с помощью общеизвестных PHP функций.
1.Создайте функцию, которая принимает начальный массив, а также эти поисковые числа в виде массива (так, чтобы Вы можете искать любое число и любую длину чисел).
2. Теперь выполните итерацию по исходному массиву, разделите каждое значение для преобразования в массив и выполните array_count_value()
как для массива разбиения, так и для массива чисел. Теперь применить проверку и увидеть точное совпадение найдено или нет?
3. Присвойте это совпадение новому массиву, объявленному в самой функции.
4.Вторите этот массив в конце функции.
$n1 = 0;
$n2 = 0;
function checkValues($array,$numbers=array()){
$finalArray = [];
if(!empty($numbers)){
foreach($array as $arr){
$splitArr = str_split($arr);
$matched = true;
$count_number_Array = array_count_values($numbers);
$count_split_array = array_count_values($splitArr);
foreach($count_number_Array as $key=>$value){
if(!isset($count_split_array[$key]) || $count_split_array[$key] < $value){
$matched = false;
break;
}
}
if($matched === true){
$finalArray[] = $arr;
}
}
}
return $finalArray;
}
print_r(checkValues($array, array($n1,$n2)));
Выход: https://3v4l.org/7uWfC А https://3v4l.org/Tuu5m А https://3v4l.org/fEKTO