php - 检查数组中所有值的前 2 位
问题描述
我有一个 array_filter 回调函数来检查数字是否在这样的数组中:
$code = "22";
$orders = array_filter(
$orders,
function ($key) use($code) {
return (in_array($code, $key['trans']));
}
);
但这是检查 trans 值是否有一个与 22 完全匹配的数字,因此它限制了结果。
我想显示所有以 $code (22) 开头的 trans 值 - 如果可能,我想忽略使用 for 循环,因为显示结果需要更长的时间。
我能做些什么呢?
解决方案
尝试改变:
return (in_array($code, $key['trans']));
至
return substr( $key['trans'], 0, strlen($code) ) == $code;
如果$key['trans']
是数组,那么我们需要对其进行迭代以$code
在其中搜索(沙箱示例):
return count(array_filter($key['trans'],
function ($key2) use($code) {
return substr( $key2, 0, strlen($code) ) == $code;
})) > 0;
PS我array_filter
因为这个答案而用于内部数组:在php中的字符串数组中查找字符串的开头
PPS 这是我的单线解决方案。正如@waterloomatt 在评论中提到的那样, simplefor
比 更快array_filter
,因此最好创建一个辅助函数来检查数组内部是否有以您需要的开头的东西。
推荐阅读
- ruby-on-rails - 从 Rails 应用程序发送 XML 请求。XML模型支付实现
- c# - c#如何清除oledbconnection缓存,多个excel查询报错
- node.js - 连接redis-cluster的ip和port应该是什么?
- javascript - 通过递归(JS)进行字符串操作
- android - 与 android 和 kotlin 共享
- laravel - 开发机器上无法解释的文件删除(macOS X)
- php - 上一个完成后如何对mysql执行查询?
- android - ViewPager 有两个选项卡和一个共享的 recyclerview onClicks 不同的项目
- sql-server - 更新表主键并将更改传播到其他表
- angular - 更改列表时清除单元格编辑