PHP foreach таблица транспонирована

Я просто не могу добраться до сути цикла foreach.

У меня есть таблица:

ID   Col1   Col2    Col3   Col4...
001  some   data    to     display
002  more   info    to     display
....

И я хотел бы динамически построить таблицу, которая выглядит так, как показано ниже, но только для одной поисковой строки ...

Итак, если поиск соответствует ID = 2, вы получите:

ID    002
Col1  more
Col2  info
Col3  to
Col4  display
...

Количество строк в результате будет зависеть от количества прочитанных столбцов.

На данный момент мне приходится использовать ужасный фиксированный рендеринг, который не будет динамическим, если количество столбцов в данных изменится.

    echo '<table class = "main"><tr><th colspan = "2">Component Information for '.$sheetData[$key]["A"].'</th></tr>';
    echo '<tr><td>'. $sheetData[1]["A"]. '</td><td></td><td>'.$sheetData[$key]["A"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["B"]. '</td><td></td><td>'.$sheetData[$key]["B"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["C"]. '</td><td></td><td>'.$sheetData[$key]["C"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["D"]. '</td><td></td><td>'.$sheetData[$key]["D"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["E"]. '</td><td></td><td>'.$sheetData[$key]["E"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["F"]. '</td><td></td><td>'.$sheetData[$key]["F"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["G"]. '</td><td></td><td>'.$sheetData[$key]["G"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["H"]. '</td><td></td><td>'.$sheetData[$key]["H"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["I"]. '</td><td></td><td>'.$sheetData[$key]["I"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["J"]. '</td><td></td><td>'.$sheetData[$key]["J"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["K"]. '</td><td></td><td>'.$sheetData[$key]["K"]. '</td></tr>';
    echo '<tr><td>'. $sheetData[1]["L"]. '</td><td></td><td>'.$sheetData[$key]["L"]. '</td></tr>';

Помогите, я просто не могу разобраться в петле ....

Вы ищете сводные таблицы. Если ваши данные поступают из Mysql, вы найдете тысячи ответов о том, как построить сводную таблицу из MySQL. Таким образом, вы получите массив, уже настроенный должным образом, и вам просто нужно будет выполнить foreach через него.

Lelio Faieta 02.05.2018 15:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

ЕСЛИ Я понимаю, что вы пытаетесь сделать, вы можете пройти через $sheetData[$key] и использовать этот ключ для извлечения всех ваших элементов $sheetData[1] в левой части таблицы. Я не уверен, насколько ясно мое объяснение, но оно будет выглядеть примерно так:

// echo your one-time, static html
echo '<table class = "main"><tr><th colspan = "2">Component Information for '.$sheetData[$key]["A"].'</th></tr>';

// looping through should produce the same output as your example and handle dynamically-sized arrays
foreach($sheetData[$key] as $subKey => $subData) {
    echo '<tr><td>'. $sheetData[1][$subKey]. '</td><td>'.$sheetData[$key][$subKey]. '</td></tr>';
}

// close the table
echo '</table>';

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