Как получить определенные значения из всех индексов в массиве

У меня есть массив, который я хочу перебрать, чтобы поместить элементы в поле выбора, но я не могу понять, как это сделать.

Массив, который я получаю из функции:

array(2) { 
    ["de"]=> array(10) { 
        ["id"]=> int(10) 
        ["order"]=> int(1) 
        ["slug"]=> string(2) "de" 
        ["locale"]=> string(5) "de-DE" 
        ["name"]=> string(7) "Deutsch" 
        ["url"]=> string(34) "http://localhost/werk/Mol/de/haus/" 
        ["flag"]=> string(66) "http://localhost/werk/Mol/wp-content/plugins/polylang/flags/de.png" 
        ["current_lang"]=> bool(false) 
        ["no_translation"]=> bool(false) 
        ["classes"]=> array(4) { 
            [0]=> string(9) "lang-item" 
            [1]=> string(12) "lang-item-10" 
            [2]=> string(12) "lang-item-de" 
            [3]=> string(15) "lang-item-first" 
            } 
        } 
    ["nl"]=> array(10) { 
        ["id"]=> int(3) 
        ["order"]=> int(2) 
        ["slug"]=> string(2) "nl" 
        ["locale"]=> string(5) "nl-NL" 
        ["name"]=> string(10) "Nederlands" 
        ["url"]=> string(26) "http://localhost/werk/Mol/" 
        ["flag"]=> string(66) "http://localhost/werk/Mol/wp-content/plugins/polylang/flags/nl.png" 
        ["current_lang"]=> bool(true) 
        ["no_translation"]=> bool(false) 
        ["classes"]=> array(4) { 
            [0]=> string(9) "lang-item" 
            [1]=> string(11) "lang-item-3" 
            [2]=> string(12) "lang-item-nl" 
            [3]=> string(12) "current-lang" 
            } 
        } 
} 

Я попробовал foreach, но получил только индексы массива

<?php 
$translations = pll_the_languages(array('raw' => 1));

$lang_codes = array();

foreach ($translations as $key => $value) {
  array_push($lang_codes, $key);
}

?>

Мне нужен языковой слаг, URL и флаг из всех индексов в этом массиве (de & nl), что мне делать?


person DutchPrince    schedule 11.05.2019    source источник


Ответы (2)


Простая итерация по внешнему массиву, а затем выберите нужные значения из подмассива.

<?php 
$translations = pll_the_languages(array('raw' => 1));

$lang_codes = array();

foreach ($translations as $lang => $info) {

    $lang_codes[$lang] = [  'slug' => $info['slug'],
                            'url' => $info['url'],
                            'flag' => $info['flag']
                        ];
}   
?>
person RiggsFolly    schedule 11.05.2019
comment
Большое спасибо, но могу я спросить, как поместить это в поле выбора? - person DutchPrince; 11.05.2019
comment
Привет, возможно, вам придется задать другой вопрос для этого. Чтобы вы могли показать нам код, который вы используете для создания веб-страницы. - person RiggsFolly; 11.05.2019

Вы можете подойти к этому как

$res = [];
foreach($translations as $key  => $value){
   $res[$key] = [
    'slug' => $value['slug'],
    'url'  => $value['url'],
    'flag' => $value['flag']
   ];
 }

Текущая демонстрация

person Rakesh Jakhar    schedule 11.05.2019