ассоциативный к числовому массиву в PHP - PullRequest
3 голосов
/ 09 января 2012

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

$countries = array
    "AD"  =>  array("AND", "Andorra"),
    "BG"  =>  array("BGR", "Bulgaria")
);

Очевидно, что AD равен 0, а BG равен 1, но когда я печатаю $countries[1], он не отображает даже "Array".Когда я печатаю $countries[1][0], он также ничего не отображает.У меня есть номер ключа, но я не должен использовать ассоциативный ключ.

Ответы [ 4 ]

13 голосов
/ 09 января 2012

Идеальный вариант использования для array_values:

$countries = array_values($countries);

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

$countries[0][0]; // "AND"
$countries[0][1]; // "Andorra"
$countries[1][0]; // "BGR"
$countries[1][1]; // "Bulgaria"
3 голосов
/ 09 января 2012

array_keys() даст вам ключи массива. array_values() даст вам значения массива. Оба будут проиндексированы численно.

1 голос
/ 13 марта 2019

вы можете преобразовать его в числовой массив:

    $countries = array(
    "AD"  =>  array("AND", "Andorra"),
    "BG"  =>  array("BGR", "Bulgaria")
);
$con=array();
$i=0;
foreach($countries as $key => $value){
    $con[$i]=$value;
    $i++;
}
echo $con[1][1];

//the result is Bulgaria
0 голосов
/ 09 января 2012

Есть несколько обходных путей, чтобы получить то, что вы хотите. Помимо создания вторичного массива карты ключей, введения ссылок или мерзости ArrayAccess, в которой одновременно хранятся числовые и ассоциативные ключи, вы также можете использовать это:

 print current(array_slice( current(array_slice($countries, 1)), 0));

Это ужасный обходной путь к $countries[1][0]. Обратите внимание, что ключи массива появляются в том же порядке; bemusing.

...