我有一个数组,其中包含项目列表和有关这些项目的描述。 我正在尝试设置一个脚本,该脚本将搜索每个值以查找部分字符串并返回找到该值的键。 下面是数组的示例。
Array
(
[10023] => Array
(
[0] => 10023
[idTag] => 10023
[1] => Bolt 4in full thread (252668)
[desc] => Bolt 4in full thread (252668)
[2] => PL9811
[serialNo] => PL9811
[3] => 252-668
[modelNo] => 252-668
)
[10024] => Array
(
[0] => 10024
[idTag] => 10024
[1] => Bolt 6in full thread (252-670)
[desc] => Bolt 6in full thread (252-670)
[2] => PL9823
[serialNo] => PL9823
[3] =>
[modelNo] =>
)
[91143] => Array
(
[0] => 91143
[idTag] => 91143
[1] => PEG 2.5mm SS (0711P)
[desc] => PEG 2.5mm SS (0711P)
[2] => PX3501
[serialNo] => PX3501
[3] => 0711P
[modelNo] => 0711P
)
)
因此,如果我要搜索"252-",我需要脚本来检查此值的所有键(idtag、desc、serialNo 和 modelNo)。 然后返回给我钥匙 10023 和 10024。
我当前使用的脚本是:
function searchFor($haystack, $needle)
{
foreach($haystack as $key => $value)
{
if ($value === $needle )
return $key;
}
return false;
}
就像目前一样,它不起作用。 但是我要改变
if ($value['modelNo'] === $needle)
并仅搜索型号以查找完全匹配项(即我的搜索是 225-668 而不仅仅是 225-),那么它确实返回密钥 10023。
如您所见 - 数组数据中存在不一致(这就是此脚本的诞生),因此我需要能够搜索可能包含值的每个可能的键并接收父键。
在
现有foreach
中再次foreach
,并使用strpos() !== false
检查未找到$needle
或false
:
foreach($haystack as $key => $array) {
foreach($array as $value) {
if(strpos($value, $needle) !== false) {
return $key;
}
}
}