Найефективніший спосіб скинути весь результат MySQL в масив?

Я намагаюся встановити всі результати в масив таким чином:

while($myres[]=$result->fetch_array(MYSQLI_ASSOC));

Це добре працює, але якщо у моїх результатах повертається 5 рядків, масив має 6 індексів, останній - нульовим. Отже, здається, що мій масив завжди один показник занадто великий.

Я міг би використовувати num_rows для циклічності результатів, але для цього потрібно налаштувати власний лічильник і збільшувати його, мені подобається скорочення ефективності моєї лінії вище, але як зупинити його заповнення останнього індексу з нульовим набором.

Це альтернатива мені, використовуючи fetch_all , який я виявив, вимагає спеціального драйвера, який встановлено не всіми php-серверами.

0

6 Відповіді

Я б просто використовувати кілька рядків

$myres = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $myres[] = $row;

Однак, якщо ви мати , щоб мати його без додаткової лінії присвоєння масиву

while ($row = $result->fetch_array(MYSQLI_ASSOC) && $myres[] = $row) {

але це більш-менш однакове.

1
додано

Я б просто використовувати кілька рядків

$myres = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $myres[] = $row;

Однак, якщо ви мати , щоб мати його без додаткової лінії присвоєння масиву

while ($row = $result->fetch_array(MYSQLI_ASSOC) && $myres[] = $row) {

але це більш-менш однакове.

1
додано

Я б просто використовувати кілька рядків

$myres = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    $myres[] = $row;

Однак, якщо ви мати , щоб мати його без додаткової лінії присвоєння масиву

while ($row = $result->fetch_array(MYSQLI_ASSOC) && $myres[] = $row) {

але це більш-менш однакове.

1
додано

Вираз

while($myres[]=$result->fetch_array(MYSQLI_ASSOC));

робить наступне:

  1. execute $result->fetch_array(MYSQLI_ASSOC)
  2. assign the result of this expression to $myres[], thereby appending an entry to the $myres array
  3. pass the result of $result->fetch_array(MYSQLI_ASSOC) as a condition to the while statement and determine whether the loop should be exited.

Зверніть увагу, що додавання запису до масиву $ myres буває перед визначенням, чи слід вийти з циклу while . Тут виходить ваш додатковий рядок.

Ви не втратите будь-якої ефективності, зробивши це класичним способом:

while ($record = $result->fetch_array(MYSQLI_ASSOC)) {
 $myres[] = $record; 
}
0
додано

Вираз

while($myres[]=$result->fetch_array(MYSQLI_ASSOC));

робить наступне:

  1. execute $result->fetch_array(MYSQLI_ASSOC)
  2. assign the result of this expression to $myres[], thereby appending an entry to the $myres array
  3. pass the result of $result->fetch_array(MYSQLI_ASSOC) as a condition to the while statement and determine whether the loop should be exited.

Зверніть увагу, що додавання запису до масиву $ myres буває перед визначенням, чи слід вийти з циклу while . Тут виходить ваш додатковий рядок.

Ви не втратите будь-якої ефективності, зробивши це класичним способом:

while ($record = $result->fetch_array(MYSQLI_ASSOC)) {
 $myres[] = $record; 
}
0
додано

Вираз

while($myres[]=$result->fetch_array(MYSQLI_ASSOC));

робить наступне:

  1. execute $result->fetch_array(MYSQLI_ASSOC)
  2. assign the result of this expression to $myres[], thereby appending an entry to the $myres array
  3. pass the result of $result->fetch_array(MYSQLI_ASSOC) as a condition to the while statement and determine whether the loop should be exited.

Зверніть увагу, що додавання запису до масиву $ myres буває перед визначенням, чи слід вийти з циклу while . Тут виходить ваш додатковий рядок.

Ви не втратите будь-якої ефективності, зробивши це класичним способом:

while ($record = $result->fetch_array(MYSQLI_ASSOC)) {
 $myres[] = $record; 
}
0
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php