Получить ключ из массива с несколькими значениями - PullRequest
0 голосов
/ 01 января 2019

Так что мне нужно вернуть число (6, 8 или 10) со значением страны.Таким образом, в примере с 'sweden' он должен возвращать 8, но ключ массива, по-видимому, просто Array ().Это неправильно в структуре моего массива или использования array_keys?

$list= array (
  'list' => 
  array (
    6 => 
    array (
        'default',
        'finland'
    ),
    8 => 
    array (
        'sweden',
        'norway'
    ),
    10 => 
    array (
        'germany',
        'belgia'
    ),
  ),
);
print_r(array_keys($list, "sweden"));

return: Array()

Ответы [ 3 ]

0 голосов
/ 01 января 2019

используйте для этого foreach.

foreach ($list as $key => $value){

}
0 голосов
/ 01 января 2019

Я думаю, это то, что вы хотите

foreach($list as $key => $value ){  
        $arr = array_keys($value);//this has your (6, 8 or 10)         
        foreach($arr as $val){
             print_r($value[$val]);//showing array data of 6,8,10 indexes
        }  
    }

вывод: enter image description here

0 голосов
/ 01 января 2019

У вас две проблемы.

Во-первых, массив, который вы хотите найти, $list['list'], а не $list.

Во-вторых, только второй аргумент array_keys()полезно для одномерных массивов.У вас есть двумерный массив, но array_keys() не будет автоматически искать внутри вложенных массивов.Поэтому вам нужно написать собственный цикл или использовать array_filter().

$results = array();
foreach ($list['list'] as $key => $value) {
    if (array_search('sweden', $value) !== false) {
        $results[] = $key;
    }
}
print_r($results);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...