PHP Создание массива внутри цикла For

Ищу помощи, если это возможно.

$pilotsids — это массив идентификаторов. merged — это таблица, содержащая данные. Для каждого идентификатора пилота я хотел бы создать массив значений newrat, которые я собираюсь использовать позже для заполнения диаграммы. Индекс цикла for должен быть добавлен к имени каждого массива следующим образом:

$data0[]
$data1[]
$data2[]...etc

Это работает, когда я делаю это отдельно:

$result = $mysqli->query("select newrat from merged where pilotid = $pilotids[0] order by mid asc"); 
    while($row = mysqli_fetch_assoc($result)) {
       $data0[] = $row['newrat'];
    } 
$result = $mysqli->query("select newrat from merged where pilotid = '$pilotids[1]' order by mid asc"); 
    while($row = mysqli_fetch_assoc($result)) {
       $data1[] = $row['newrat'];
    } 
$result = $mysqli->query("select newrat from merged where pilotid = '$pilotids[2]' order by mid asc"); 
    while($row = mysqli_fetch_assoc($result)) {
       $data2[] = $row['newrat'];
    } 

Это не так, если я попытаюсь выполнить автоматическую итерацию, скажем, 10 раз:

for($i=0; $i < 10; $i++) {
        $result = $mysqli->query("select newrat from merged where pilotid = $pilotids[$i] order by mid asc"); 
        while($row = mysqli_fetch_assoc($result)) {
            ${$data.$i}[] = $row['newrat'];  
            
        }
   }

Использование имен переменных, таких как $data0, обычно лучше обрабатывается массивом - в вашем случае двумерным массивом. Что-то вроде $data[0][] при добавлении новых данных.

Nigel Ren 07.05.2022 14:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать так:

$data = [];
for($i=0; $i < 10; $i++) {
    $result = $mysqli->query("select newrat from merged where pilotid = $pilotids[$i] order by mid asc"); 
    while($row = mysqli_fetch_assoc($result)) {
        $data[$i][] = $row['newrat'];
    }
}

Как видите, я использую двумерный массив, который определен вне цикла.

Спасибо. Выведет ли приведенный выше индекс в имени массива, например $data0, $data1, $data2...etc? Мне нужно, чтобы диаграмма распознавала, какой набор данных анализировать. Я все равно попробовал, ошибок нет, но график не подхватил.

Naim 07.05.2022 14:51

На выходе будет один массив, содержащий несколько массивов.

CleverSkull 07.05.2022 14:57

Огромное спасибо. Только ваш последний комментарий заставил меня понять, что лучше использовать двумерный массив. Я пытался буквально распечатать индекс в имени массива.

Naim 07.05.2022 15:07

Да, вы пытались использовать отдельные переменные с индексом в нем. Однако в многомерном массиве это проще, особенно если у вас есть динамическое количество (или большое количество) записей.

CleverSkull 07.05.2022 15:09

Другие вопросы по теме