首页 > 解决方案 > 检查数组中所有值的前 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 循环,因为显示结果需要更长的时间。

我能做些什么呢?

标签: phparraysfunctionfor-loopcallback

解决方案


尝试改变:

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,因此最好创建一个辅助函数来检查数组内部是否有以您需要的开头的东西。


推荐阅读