Ассоциативный с числовым массивом в PHP

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

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

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

Ответ 1

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

$countries = array_values($countries);

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

$countries[0][0]; // "AND"
$countries[0][1]; // "Andorra"
$countries[1][0]; // "BGR"
$countries[1][1]; // "Bulgaria"

Ответ 2

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

Ответ 3

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

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

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