PHP中变量与数组的速度比较

3

我有一个有点儿愚蠢的问题。我只是想知道一下。当我编码时,如果我有很多与特定实体相关的变量,我有时会使用键值对创建关联数组来定义这些实体。

我想知道的是,虽然它们都保存在内存中,但哪种方法更小/更快,创建几个变量还是创建带有变量键和值的数组?

以下是一些例子:

$apples  = 'apples'; 
$grapes  = 'some grapes';
$bananas = 'lots of bananas';

$fruits = ['apples' => 'apples', 'grapes' => 'some grapes', 'bananas' => 'lots of bananas'];

我将用它来循环遍历数据库中的条目,并定义值以填充我的标记。


这与你想在之后做什么有关。 - mcklayin
你应该查看这个链接:https://dev59.com/wGYq5IYBdhLWcg3woB4W#14337876 - Amit Merchant
3
速度或内存消耗的差异并不重要,不必担心。应关注远程服务器请求、数据库查询和文件系统访问。 - axiac
1
如果您有相关的值需要存储,那么数组可能是一个很好的选择。如果您想要迭代这些值,那么使用数组是最好的方式。 - mickmackusa
PHP使用哈希表来存储键值对数组,因此使用变量比使用数组更快。 - Kerkouch
显示剩余2条评论
3个回答

2

速度和内存可能并不重要。编写简洁、直接的代码。

如果您要迭代或搜索这些值,请使用数组。

作为基本规则,我不声明单次使用变量。只有在极端情况下大幅提高可读性时才会打破这个规则。


这些值是在循环内部填充的,那么将它们放入数组而不是变量中是否更合适? - 0xe1λ7r
1
我认为使用数组会导致更简洁、易读和易于维护的代码。这是我一般而言的看法,但要确认还需要看实际代码。另一个要点是:不要声明只使用一次的变量。 - mickmackusa
谢谢@mickmackusa,非常感谢! - 0xe1λ7r

2

让我们试试

测试1

使用6个PHP变量

$makevar1 = 'checkspeed';
$makevar2 = 'checkspeed';
$makevar3 = 'checkspeed';
$makevar4 = 'checkspeed';
$makevar5 = 'checkspeed';
$makevar6 = 'checkspeed';

print_r(memory_get_usage()); 

结果为458056

测试2

有6个数组键

$makevar = array();
$makevar['var1'] = 'checkspeed';
$makevar['var2'] = 'checkspeed';
$makevar['var3'] = 'checkspeed';
$makevar['var4'] = 'checkspeed';
$makevar['var5'] = 'checkspeed';
$makevar['var6'] = 'checkspeed';

print_r(memory_get_usage());

结果为459168

最终结果:访问变量比访问数组更快。


5
感谢您的回复。从技术上讲,您的测试显示变量使用可以减少内存占用,而非提高使用速度。 - 0xe1λ7r

1
在PHP中使用数组可能比使用变量更慢。不过,这并不值得深究。相反,应该注重可读性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接