it-swarm.com.ru

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

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

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

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

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

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

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

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

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


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

18
Felix Kling

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

$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()

32
Alix Axel

Если кому-то все еще интересно, как это сделать, для этого есть более простое решение с помощью функции array_combine

$array = array(1, 2, 3, 4, 5);
$assoc = array_combine($array,$array);
0
A.M.N.Bandara

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

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

где $ arr1 - это массив, который должен быть преобразован в ассоциативный массив ..__

0
Thyagi