【发布时间】:2010-02-02 12:47:58
【问题描述】:
以下两种数据结构中哪一种“更好”?
array('key'=>array(1,2,3,4))
或者:
array('key',array(1,2,3,4))
即,最好将数组存储为双元素数组中的第二个元素,还是存储为带有键“key”的数组中的单个元素。
假设出于我的目的,为了方便起见,它们是等价的。我只是好奇一个是否比另一个使用更多的资源。
【问题讨论】:
标签: php arrays performance
以下两种数据结构中哪一种“更好”?
array('key'=>array(1,2,3,4))
或者:
array('key',array(1,2,3,4))
即,最好将数组存储为双元素数组中的第二个元素,还是存储为带有键“key”的数组中的单个元素。
假设出于我的目的,为了方便起见,它们是等价的。我只是好奇一个是否比另一个使用更多的资源。
【问题讨论】:
标签: php arrays performance
您可以使用适合您要存储的内容的任何一个。
如果键与值数组及其唯一性相关,则使用键/值。
担心在这种情况下使用的资源是微优化和无关紧要的干扰。
【讨论】:
如果这是数组的完整大小,那很好。
但是,如果你真的有一个类似的数组
array(
array('key', array(...)),
array('key', array(...)),
array('key', array(...)),
etc
);
而不是
array(
'key' => array(...),
'key' => array(...),
'key' => array(...),
);
那么它不仅奇怪,而且非常难读。
【讨论】:
将键命名为值的美妙之处在于:
“我想要 Bob 的价值”
$bob = $myArray['bob'];
而不是
foreach($myArray as $key => $value) {
if ($value[0] === 'bob') { // the first value of your 2nd type
$bob = $myArray[1]; // get the next value.
}
}
当然,对于第二个示例,您可以考虑end()。但是比较两个,很明显第一个例子赢了!
【讨论】: