对嵌套数组进行索引 VS 使用对最深级别的引用?

问题描述 投票:0回答:3

给定一个深度嵌套的数组:

$array = array('nested' => array('so' => array('deep' => array())));

...哪个更快/“更好”?

$array['nested']['so']['deep'][0] = 'a';
$array['nested']['so']['deep'][1] = 'b';
$array['nested']['so']['deep'][2] = 'c';

$deep = &$array['nested']['so']['deep'];
$deep[0] = 'a';
$deep[1] = 'b';
$deep[2] = 'c';

或者它们是一样的吗?如果是这样,哪一个更好,为什么?

php arrays optimization nested reference
3个回答
3
投票

保留参考通常更快、更容易管理。但是,除非您多次访问它,否则它可能不会产生任何影响。散列很快。在我最近运行的测试中,我发现散列甚至比我之前想象的还要快。不过,您通过参考绕过的级别越多,您看到的改进就越多。

不过,对我来说最重要的是它更容易维护。在大多数情况下,性能提升可能可以忽略不计。我不会为了性能而费心这样做,但如果它使你的代码更具可读性,那么我完全支持它。


2
投票
您可能错过了另一个变体:

$deep[0] = 'a'; $deep[1] = 'b'; $deep[2] = 'c'; $array['nested']['so']['deep'] = $deep;

更快更好取决于很多,这些术语相当广泛。打字速度更快?你自己决定吧。执行速度更快?我认为以这样的一般形式来了解并不值得,这可能会在具体的地方产生影响,但是你也需要具体地衡量它才能找出答案。


0
投票
自己检查一下

第一个例子

参考

© www.soinside.com 2019 - 2024. All rights reserved.