Php 在多维数组中搜索值并返回所有子数组值及其';s键

Php 在多维数组中搜索值并返回所有子数组值及其';s键,php,multidimensional-array,Php,Multidimensional Array,我需要在数组中搜索关键字,成功后返回与包含关键字的所有数组关联的所有信息 下面是数组的外观 Array ( [#10-CH-L/W] => Array ( [0] => 278.00 [1] => HIGH COLLAR LOCK WASHER [2] => NUTBLT ) [#16S-NUTS] => 6.00 [#16S-SLEEVES] => 13.00 [#16SS-NUTS] =&g

我需要在数组中搜索关键字,成功后返回与包含关键字的所有数组关联的所有信息

下面是数组的外观

Array
(
[#10-CH-L/W] => Array
    (
        [0] => 278.00
        [1] => HIGH COLLAR LOCK WASHER
        [2] => NUTBLT
    )

[#16S-NUTS] => 6.00
[#16S-SLEEVES] => 13.00
[#16SS-NUTS] => 1.00
[#16SS-SLEEVES] => 4.00
[#20S-NUTS] => 11.00
[#20S-SLEEVES] => 14.00
[#20SS-NUTS] => .00
[#20SS-SLEEVES] => .00
[#400-CLAMP] => Array
    (
        [0] => .00
        [1] => DIXON HOSE CLAMP-3-1/2" OD
        [2] => FITTST
    )

[#8S-SLEEVES] => 5.00
[-006-BN70] => Array
    (
        [0] => 181.00
        [1] => O-RING 1/8 X 1/4 X 1/16
        [2] => SEALS 
    )

[-006-VT75] => Array
    (
        [0] => .00
        [1] => O-RING 1/8 X 1/4 X 1/16
        [2] => SEALS 
    )
我在这里发现了一个类似的问题,并修改/尝试了代码,但它只从数组中返回一个匹配项,并将其密钥放入数组中。如果它返回所有关联数组的键,这将是很好的。编辑循环似乎只找到$id的第一个匹配项,然后停止

function searchForId($id, $array) {
               foreach ($array as $key => $val) {
                   if ($val[2] === $id) {
                      $keyarray[] = $key;

                       return $keyarray;
                   }

               }    
               return null;
            }

            $id = searchForId('SEALS', $multi-array);

@西瓦巴兰的回答正是我所需要的。我只是添加了一个片段,以获得代码,并将与每个子数组关联的数据吐出。我已经潜伏多年了。我在想什么

function searchForId($id, $array) {
                    $keyarray = array();
                       foreach ($array as $key => $val) {
                            if (isset($val[2]) && $val[2] === $id) {
                                 array_push( $keyarray, $key);
                                 echo "$key | $val[0] | $val[1] | $val[2]";
                                }

                           }
                            return $keyarray;                  
               }    



            $id = searchForId('needles', $haystack);

我得到了同样的结果,尽管推动是有意义的。我认为它在数组中搜索的方式有问题。当我在循环发生时打印$key时,我也只得到最后一个结果,这恰好是数组中的最后一个值。实际上,它似乎只找到了$id的第一个匹配项,并在之后立即停止。@Levbesaw我更新了我的代码,请尝试此操作。第二个数组元素的Bcoz不包含3个元素。这就是我的错谢谢你!!这非常有效。现在我只需要抓取并打印出与每个键相关的数据。我会更新的。你真了不起,西瓦巴兰!很高兴它帮助了你
function searchForId($id, $array) {
                    $keyarray = array();
                       foreach ($array as $key => $val) {
                            if (isset($val[2]) && $val[2] === $id) {
                                 array_push( $keyarray, $key);
                                 echo "$key | $val[0] | $val[1] | $val[2]";
                                }

                           }
                            return $keyarray;                  
               }    



            $id = searchForId('needles', $haystack);