【问题标题】:Why array_values is better than a foreach?为什么 array_values 比 foreach 更好?
【发布时间】: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?

标签: php arrays


【解决方案1】:
  1. 代码更少。
  2. 更容易理解代码,因为这正是 array_values 的用途,但您的 foreach 可以做任何事情,除非您阅读并理解它。
  3. array_values 是在幕后用 C 语言实现的原生 PHP 函数,可能比自定义 PHP 代码性能更高。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 2012-02-04
    • 2015-06-27
    • 2012-01-02
    • 2016-12-07
    • 2011-06-30
    相关资源
    最近更新 更多