Найдите и получите ключ в многомерном массиве - PullRequest
0 голосов
/ 10 июля 2020

У меня есть многомерный массив, и мне нужно искать ключ верхнего уровня по значению в массивах «add_fields» по «значению». Не могу понять, что смогу добиться результата. Может ли кто-нибудь мне помочь?

Я искал его в Google и нашел несколько решений, но не смог получить никакого результата.

Пробовал этот код

array_search('001001', array_column(array_column($arr, "usr_column_504"), 0)), 

но не нашел ' Я ничего не получаю, и мне нужно получить ключ верхнего уровня. В этом примере это 0 ;

array (
    0 => 
        array (
          'id' => 1,
          'group_id' => 327,
          'volume' => 0,
          'vat' => 1,
          'order_id' => 1,
          'add_fields' => 
          array (
            1 => 
            array (
              'field' => 'usr_column_501',
              'value' => '',
            ),
            2 => 
            array (
              'field' => 'usr_column_504',
              'value' => '001001',
            ),
          ),
        ),
    1 => 
        array (
          'id' => 2,
          'group_id' => 327,
          'vat' => 1,
          'order_id' => 2,
          'add_fields' => 
          array (
            1 => 
            array (
              'field' => 'usr_column_501',
              'value' => '',
            ),
            2 => 
            array (
              'field' => 'usr_column_504',
              'value' => '001002',
            ),
          ),
        ),
)

1 Ответ

1 голос
/ 10 июля 2020

Если вам нужен первый ключ, в котором значение field равно usr_column_504, вы можете использовать внешний и внутренний foreach.

Когда значение поля найдено, верните $key из внешний foreach.

foreach ($arr as $key => $item) {  
    foreach ($item["add_fields"] as $addField) {
        if ($addField["field"] === "usr_column_504") {
            echo $key;
            return;
        }
    }
}

Вывод

0

Php демонстрация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...