我有一个array_filter回调函数,它检查数字是否在数组中,如下所示:
$code = "22";
$orders = array_filter(
$orders,
function ($key) use($code) {
return (in_array($code, $key['trans']));
}
);但这是在检查trans值是否有一个与22完全匹配的数字,所以它限制了结果。
我想显示所有以$code (22)开头的trans值-如果可能的话,我想忽略使用for循环,因为显示结果需要更长的时间。
我能做些什么呢?
发布于 2020-09-19 02:55:04
尝试更改:
return (in_array($code, $key['trans']));至
return substr( $key['trans'], 0, strlen($code) ) == $code;如果$key['trans']是数组,那么我们需要迭代它来搜索其中的$code (sandbox example):
return count(array_filter($key['trans'],
function ($key2) use($code) {
return substr( $key2, 0, strlen($code) ) == $code;
})) > 0;另外,我使用了array_filter作为内部数组,因为这个答案:find beginning of a string inside an array of strings in php
附注:这是我的单行解决方案。正如@waterloomatt在评论中提到的,简单的for比array_filter更快,所以最好创建一个帮助器函数来检查数组内部是否有从你需要的东西开始的东西。
https://stackoverflow.com/questions/63961168
复制相似问题