Каков самый быстрый способ преобразования простого массива в ассоциативный массив в PHP, чтобы значения могли быть проверены в isset($array[$value])
?
То есть самый быстрый способ сделать следующее преобразование:
$array = array(1, 2, 3, 4, 5); $assoc = array(); foreach ($array as $i => $value) { $assoc[$value] = 1; }
array_flip()
делает именно это:
array_flip () возвращает массив в флип-порядке, то есть ключи от trans становятся значениями и значениями из ключей trans становятся.
Обратите внимание, что значения trans должны быть действительными ключами, то есть они должны быть целыми или строковыми . Предупреждение будет выдано, если значение имеет неправильный тип, и пара ключей / значений, о которых идет речь , не будет перевернута .
Если значение имеет несколько вхождений, последний ключ будет использоваться в качестве его значений, а все остальные будут потеряны.
Но кроме того, в 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()