Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在多维数组中搜索任意键中的部分值_Php_Arrays_Multidimensional Array_Foreach - Fatal编程技术网

Php 在多维数组中搜索任意键中的部分值

Php 在多维数组中搜索任意键中的部分值,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我有一个数组,其中包含项目列表和关于这些项目的描述。我正在尝试设置一个脚本,该脚本将在每个值中搜索部分字符串,并返回找到该值的键。下面是一个数组示例 Array ( [10023] => Array ( [0] => 10023 [idTag] => 10023 [1] => Bolt 4in full thread (252668) [desc] => Bolt 4in full thread

我有一个数组,其中包含项目列表和关于这些项目的描述。我正在尝试设置一个脚本,该脚本将在每个值中搜索部分字符串,并返回找到该值的键。下面是一个数组示例

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
中使用
strps()!==false
检查
$POWERE
false
是否未找到:

foreach($haystack as $key => $array) {
  foreach($array as $value) {
      if(strpos($value, $needle) !== false) {
         return $key;
      }
  }
}

使用
PDO::FETCH_ASSOC
作为FETCH_样式,它将减少您的数组。