array_push()和$array[] = ....哪个更快?

31

我需要将从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],这样速度会稍微快一些。 - DisgruntledGoat
2个回答

29

这要看情况...

文档中说,

"如果你使用array_push()向数组中添加一个元素,最好使用$array[] =,因为这样不会有调用函数的额外开销。"

来源: https://www.php.net/array_push

所以这取决于你想在任何特定时刻将多少数据塞入该数组中。

此外,还有一个备选方案。如果在使用array_push时引用的数组不存在,你将会遇到错误。而如果使用$array[],数组将会为你创建。


最终我决定使用array[] = ...,因为数组在某些阶段可能会变得非常大。 - Anriëtte Myburgh
2
我认为在使用$arr[] = X之前声明一个数组(如 $arr = array())会更快。如果您的 $arr[] 语句位于某些控制逻辑中,这也非常有用 - 最终仍然会得到一个没有元素的数组变量。 - DisgruntledGoat
@DisgruntledGoat 为什么声明一个空数组更快?你有证据吗? - Kosi

22

刚刚测试了一下链接,它是正确的,现在没有指向伟哥的链接了。 :) - Anriëtte Myburgh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接