Как получить имя ключа или индекса из значения в массиве без итерации? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть двумерный массив. Я пытаюсь получить ключ / индекс имени данного значения. Как мне это сделать? Я просмотрел руководство PHP, и они предлагают сделать итерацию, но я не хочу повторять. Есть ли способ обойтись без итерации?

Я хотел бы сделать что-то похожее на

$country = 'Algeria';
echo $iso_countries[$country]; //obviously this will throw an error since the index does not exist. It's just an example.

массив

$iso_countries = array
(
    'AF' => 'Afghanistan',
    'AX' => 'Aland Islands',
    'AL' => 'Albania',
    'DZ' => 'Algeria',
);

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Вы должны использовать array_search

$iso_countries = array
(
    'AF' => 'Afghanistan',
    'AX' => 'Aland Islands',
    'AL' => 'Albania',
    'DZ' => 'Algeria',
);

$founded = array_search('Algeria',$iso_countries);
echo $founded;
2 голосов
/ 28 апреля 2020

Нет, невозможно получить ключ значения из массива без явной (foreach, while, for) или неявной (in_array, array_flip, array_search) итерации.

PHP РУЧНАЯ СИСТЕМА: массив в PHP на самом деле является упорядоченной картой. Карта - это тип, который связывает значения с ключами. Этот тип оптимизирован для нескольких различных применений; он может быть обработан как массив, список (вектор), таблица ha sh (реализация карты), словарь, коллекция, стек, очередь и, возможно, больше. Поскольку значения массива могут быть другими массивами, также возможны деревья и многомерные массивы.

Из do c массив - это карта, которая используется для получения значения из индекса или ключа, а не наоборот.


Если вы выполняете многократный поиск с помощью $country, вы можете перевернуть $iso_contries, а затем использовать индекс для получения значения.

$iso_countries = array
(
    'AF' => 'Afghanistan',
    'AX' => 'Aland Islands',
    'AL' => 'Albania',
    'DZ' => 'Algeria',
);
$iso_countries = array_flip($iso_countries);
$country = 'Algeria';
echo $iso_countries[$country];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...