Каков наилучший (самый быстрый, самый читаемый и т. Д.) Способ создания ассоциативного массива?
В прошлый раз я видел, что мой коллега создал небольшой массив ассоциаций:
$array['is_enabled'] = false;
В обзоре кода я передаю свое мнение, что более читабельная форма:
$array = [
'is_enabled' => false
];
Но «читабельность» — вещь субъективная, поэтому это не лучший аргумент.
Первый подход 3v4l ссылка:
$subscription['is_enabled'] = false;
Вы можете увидеть в ссылке, которая сгенерировала 3 операции
number of ops: 3
compiled vars: !0 = $subscription
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
3 0 E > ASSIGN_DIM !0, 'is_active'
1 OP_DATA
2 > RETURN 1
Avg. использование памяти 25,15 МиБ и работает в 0.013s (пользовательское время PHP 7.1.x).
Второй подход 3v4l ссылка:
$subscription = ['is_active' => false];
Сейчас это всего 2 операции. Назначить и вернуть.
number of ops: 2
compiled vars: !0 = $subscription
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
3 0 E > ASSIGN !0,
1 > RETURN 1
Avg. использование памяти 24,40 МиБ и работает в 0.010s (пользовательское время PHP 7.1.x).
Я не уверен что такое операция op_data
это отсутствует во втором подходе. Но все равно это на одну операцию меньше, и в результате мы получаем почти на 0,8 МБ меньше памяти и ~ 23% быстрее времени выполнения.
Так выглядит $array= ['key' => false];
Это не только более читабельно, но и довольно просто для парсера.
В этой записи мы пропускаем одну операцию из трех, и это дает нам дополнительную свободную память и время.
Других решений пока нет …