【问题标题】:array_push() vs. $array[] = .... Which is fastest? [duplicate]array_push() 与 $array[] = .... 哪个最快? [复制]
【发布时间】:2010-11-07 15:01:49
【问题描述】:

我需要将从 MySQL 接收到的值添加到数组 (PHP) 中。这是我所拥有的:

$players = array();

while ($homePlayerRow = mysql_fetch_array($homePlayerResult)) {
    $players[] = $homePlayerRow['player_id'];
}

这是唯一的方法吗?

另外,以下是更快/更好吗?

$players = array();

while ($homePlayerRow = mysql_fetch_array($homePlayerResult)) {
    array_push($players, $homePlayerRow['player_id']);
}

【问题讨论】:

  • 如果您只访问关联键 (player_id),那么最好使用mysql_fetch_assoc。您也可以使用mysql_fetch_row,然后使用$homePlayerRow[0],这会稍微快一些。

标签: php mysql micro-optimization


【解决方案1】:

这取决于...

文档说

“如果你使用 array_push() 向数组添加一个元素,最好使用 $array[] = 因为这样就没有调用函数的开销。”

来源:http://us2.php.net/array_push

因此,归结为您希望在任何特定时刻将多少数据塞入该数组。

此外,还有一个后备方案。如果使用 array_push 调用它时引用的数组不存在,则会出现错误。如果您使用 $array[],将为您创建数组。

【讨论】:

  • 最后我决定使用 array[] = ... 因为数组在某个阶段可能会变得非常大
  • 我相信在使用$arr[] = X 之前声明一个数组(使用$arr = array())会更快。如果您的 $arr[] 语句位于某些控制逻辑中,这也很有用 - 最后您仍然有一个变量,一个没有元素的数组。
  • @DisgruntledGoat 为什么声明一个空数组会更快?你有这方面的证据吗?
【解决方案2】:

你可以运行它,发现array_push在某些情况下比较慢:

http://snipplr.com/view/759/speed-test-arraypush-vs-array/

运行您的代码。享受吧。

【讨论】:

  • 刚刚测试了那个链接,它是正确的,现在没有伟哥指向。 :)
猜你喜欢
  • 2010-10-08
  • 1970-01-01
  • 2020-03-31
  • 2014-05-17
  • 2013-11-19
  • 1970-01-01
  • 2020-12-28
  • 2018-08-15
相关资源
最近更新 更多