创建关联数组的最佳(最快,最可读等)方法是什么?
上次我看到我的同事时,通过以下方式创建小型关联数组:
$array['is_enabled'] = false;
在代码审查中,我认为更可读的形式是:
$array = [
'is_enabled' => false
];
但是"可读"是主观的东西,所以它不是最好的论据。
答案 0 :(得分:1)
第一种方法3v4l link:
$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
平均。内存使用量 25.15 MiB 并在 0.013s (用户时间PHP 7.1.x)中运行。
第二种方法3v4l link:
$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
平均。内存使用量 24.40 MiB 并以 0.010s (用户时间PHP 7.1.x)运行。
我不确定第二种方法中缺少哪种操作op_data
。但仍然只有一次操作,结果我们的内存使用量减少了近0.8MiB,执行时间缩短了约23%。
所以它看起来像$array= ['key' => false];
它不仅更易读,而且解析器也更简单。 使用这种表示法,我们可以跳过三个操作,这样可以为我们提供额外的空闲记忆和时间。