Php 检查数组中所有值的前2位

Php 检查数组中所有值的前2位,php,arrays,function,for-loop,callback,Php,Arrays,Function,For Loop,Callback,我有一个array_filter回调函数,用于检查数组中是否有数字,如下所示: $code = "22"; $orders = array_filter( $orders, function ($key) use($code) { return (in_array($code, $key['trans'])); } ); 但这是检查trans值是否有一个正

我有一个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']));

如果
$key['trans']
是数组,那么我们需要对其进行迭代以在其中搜索
$code

另外,我对内部数组使用了
array\u filter
,因为答案如下:

这是我的单线解决方案。正如@Waterlomatt在评论中提到的,simple
for
array\u filter
更快,因此最好创建一个帮助函数来检查数组中是否有从您需要的内容开始的内容。

尝试更改:

return (in_array($code, $key['trans']));

如果
$key['trans']
是数组,那么我们需要对其进行迭代以在其中搜索
$code

另外,我对内部数组使用了
array\u filter
,因为答案如下:


这是我的单线解决方案。正如@Waterlomatt在评论中提到的,simple
for
array\u filter
更快,因此最好创建一个helper函数来检查数组中是否有从您需要的内容开始的内容。

,是否要筛选出所有不以
22
开头的元素?否-我想筛选仅以2开头的元素-for(each)循环通常比其数组*等价物更快。需要明确的是,您想过滤掉所有不以
22开头的元素吗?不-我想过滤以2开头的元素只是一个FYI-for(each)循环通常比它们的数组*等价物更快。非常好的解决方案。如果trans只有一个值,这将起作用-对不起,我应该在我的问题中指定这个值。trans有一个值数组,因此substr()函数在这里不起作用。@alexel My bad。更新了我的答案。现在更好了?非常好的解决方案。如果trans只有一个值,这将起作用-对不起,我应该在我的问题中指定这个值。trans有一个值数组,因此substr()函数在这里不起作用。@alexel My bad。更新了我的答案。现在好多了?
return count(array_filter($key['trans'],
  function ($key2) use($code) {
    return substr( $key2, 0, strlen($code) ) == $code;
  })) > 0;