【发布时间】:2017-09-21 01:48:50
【问题描述】:
为什么 array_values() 比 foreach 循环更好地重新索引数组?
示例 1:
$arrays = [
1 => '0',
2 => '1',
3 => '2',
4 => '3',
5 => '',
6 => '',
7 => '7',
8 => [
0 => 'toto',
1 => 'manu',
2 => 'noé',
3 => 'david'
]
];
$arrayNonAssoc = [];
foreach ($arrays as $array) {
$arrayNonAssoc[] = $array;
}
因此,示例 1 是不应该做的错误,并且...
示例 2:
$arrays = [
1 => '0',
2 => '1',
3 => '2',
4 => '3',
5 => '',
6 => '',
7 => '7',
8 => [
0 => 'toto',
1 => 'manu',
2 => 'noé',
3 => 'david'
]
];
var_dump(array_values($arrays));
我已经阅读过它,但我没有找到任何解释。 示例 1 和 示例 2 都返回相同的结果...
是关于性能的吗?
【问题讨论】:
-
除了您的数组无效(您有 2 个带有键
7的条目)这一事实之外,这取决于具体情况......但一般来说,对于较小的数组,array_values()是一个函数调用,而不是使用 foreach 的代码块......与循环和赋值相比,一个函数调用 -
没有规则、指导、建议或最佳实践告诉任何人使用
array_values()而不是foreach()(反之亦然)。投票结束这个问题,因为它不适合 SO:这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。 -
要说某事“更好”与否并不总是那么容易,因为大多数时候这完全取决于周围的环境。如果您想知道某些东西是否更适合您的用例,您应该简单地分析它。此外,当它只是一个多维数组时,调用
arrays也会令人困惑。 -
@Stephan-v
Better并不总是意味着性能更好。 -
你说得对,因为最后一个问题,我正朝着那个方向前进:
Is it about performances?