php preg匹配。查找两个值不按顺序排列的元素

问题描述 投票:0回答:1

我得到了类似的数组:

$array = array(
    3A32,
    4565,
    7890,
    0012,
    A324,
    9002,
    3200,
    345A,
    0436
);

然后,我需要找出哪些元素具有两个数字。数字的值可以更改。

如果值是:

$n1 = 0; 
$n2 = 3;

对于该搜索,preg_match()应该返回(3200,0436)

如果值是:

$n1 = 0; 
$n2 = 0;

[preg_match()应该返回(0012,3200,9002)

任何想法?

谢谢。

php preg-match
1个回答
0
投票

很简单,

1。创建一个函数,该函数接受初始数组以及数组形式的那些搜索数字(以便您可以搜索任何数字和任意长度的数字)。

2。现在遍历初始数组,并从arary_diff()search numbers array遍历initial array。如果即将到来的数组计数为0,则表示找到匹配项。

3。将此匹配分配给在函数本身下声明的新数组。

4。在函数末尾返回此数组。

function checkValues($array,$numbers=array()){
    $finalArray = [];
    if(!empty($numbers)){
        foreach($array as $arr){
            $splitArr = str_split($arr);
            if(count(array_diff($numbers,$splitArr)) == 0){
                $finalArray[] = $arr;
            }
        }

    }

    return $finalArray;
}

print_r(checkValues($array, array($n1,$n2)));

https://3v4l.org/F2EEO

© www.soinside.com 2019 - 2024. All rights reserved.