Поиск в многомерном массиве значения и возврат всех значений подмассива и его ключа - PullRequest
0 голосов
/ 25 июня 2018

Мне нужно найти ключевое слово в массиве массивов и в случае успеха вернуть всю информацию, связанную со всеми массивами, которые его содержат.

Вот как выглядит массив

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 
    )

Я нашел похожий вопрос здесь и изменил / попытался выполнить код, но он возвращает только одно совпадение из массива и помещает ключ дляэто в массив.Это было бы хорошо, если бы он возвращал ключи для ВСЕХ связанных массивов. edit кажется, что циклы только находят первое вхождение $ 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);

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

@ Ответ Сивабалана был именно тем, что мне было нужно.Я просто добавил одну часть, чтобы код выплевывал данные, связанные с каждым вложенным массивом.Я скрывался годами.О чем я думал?

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);
0 голосов
/ 25 июня 2018
   function searchForId($id, $array) {
          $keyarray = [];
           foreach ($array as $key => $val) {
               if (isset($val[2]) && $val[2] === $id) {
                  array_push( $keyarray, $key);
               }
           }    
           return $keyarray;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...