Как преобразовать простой массив в ассоциативный массив?

каков самый быстрый способ преобразования простого массива в ассоциативный массив в PHP, чтобы значения можно было проверить в isset($array[$value])?

т. е. самый быстрый способ сделать следующее преобразование:

$array = array(1, 2, 3, 4, 5);
$assoc = array();

foreach ($array as $i => $value) {
        $assoc[$value] = 1;
}

3 ответов


array_flip() именно это и делает:

array_flip () возвращает массив в порядке флип, то есть ключи от транс стать значения и значения из транс становятся ключами.

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

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


но кроме этого, в PHP есть только один тип массива. Даже числовые ("простые", как вы это называете) массивы ассоциативны.


ваш код является точным эквивалентом:

$assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or
$assoc = array_fill_keys(range(1, 5), 1);

array_flip(), хотя это может работать для ваших целей, это не то же самое.

PHP ref:array_fill_keys(), array_flip()


просто используйте эту логику

$var1 = json_encode($arr1, JSON_FORCE_OBJECT);
$var1 = json_decode($var1);

где $arr1-массив, который должен быть преобразован в ассоциативный массив. Это может быть достигнуто с помощью json_encode и json_decode то же самое