2009-07-02 3 views
25

мне нужно добавить значения, полученные от 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']); 
} 

Заранее спасибо

+0

Если вы используете только ассоциативные ключи (player_id), тогда лучше использовать 'mysql_fetch_assoc'. Вы также можете использовать 'mysql_fetch_row', затем' $ homePlayerRow [0] ', что немного быстрее. – DisgruntledGoat

ответ

16

и может работать и видеть, что array_push медленнее в некоторых случаях

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

запустить свой код.

+0

Просто протестировал эту ссылку, и это правильно, теперь нет виагры. :) –

24

... Зависит

Документация говорит,

«Если вы используете array_push() для добавления одного элемента в массив лучше используйте $ array [] =, потому что таким образом нет накладных расходов на вызов функции. "

Источник: http://us2.php.net/array_push

Так это сводится к тому, сколько данных вы хотите, чтобы втиснуть в этот массив в любой конкретный момент. Кроме того, есть спад, если ссылка с массивом не существует, когда вы вызываете ее с помощью array_push, вы столкнетесь с ошибкой. Если вы используете $ array [], массив будет создан для вас.

+0

В итоге я решил пойти с массивом [] = ... поскольку массив может стать очень большим на некотором этапе –

+2

Я считаю, что быстрее использовать массив (с '$ arr = array()') перед использованием '$ arr [] = X'. Это также полезно, если ваши '$ arr []' операторы находятся внутри некоторой логики управления - у вас все еще есть переменная в конце, массив без элементов. – DisgruntledGoat

Смежные вопросы