php - php预匹配。查找两个值不按顺序排列的元素
问题描述
我得到了这样的数组:
$array = array(
3A32,
4565,
7890,
0012,
A324,
9002,
3200,
345A,
0436
);
然后我需要找出哪些元素有两个数字。number 的值可以改变。
如果值为:
$n1 = 0;
$n2 = 3;
对于该搜索preg_match()
应该返回(3200,0436)
如果值为:
$n1 = 0;
$n2 = 0;
preg_match()
应该返回(0012,3200,9002)
任何想法?
谢谢。
解决方案
在多次查看您的输入数组以及基于给定数字的输出后,我得到了您的逻辑。
由于我的正则表达式一点都不好,所以我会用常见的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
推荐阅读
- mysql - 使用 XAMPP 找不到服务器 IP 地址
- javascript - 如何在 DELETE express 函数中重定向?
- c# - 启动应用程序时 Xamarin 清空 SwipeCardView
- node.js - 尝试安装 react-redux 依赖项时出错
- javascript - 如何在 Firebase RTDB 中获得原子增量值?
- javascript - Javascript 字符串到枚举
- react-native - React Native:看不到 FontAwesome 或任何其他展览/矢量图标
- javascript - webpack encore fetch in symfony 5
- javascript - 我有一个关于这个链表合并代码如何工作的快速问题
- javascript - 如何在提交按钮后使用新道具重新渲染 React 组件?