Разбейте строку 2 раза и положите в стол
Хорошо, у меня есть строка, которая должна быть разделена на 2 раза. Первый раз через пробелы и второй раз через запятую. Так что я могу положить это в таблицу.
Мне удалось разделить строку по пробелам и поместить ее в первый столбец таблицы, но я пытаюсь разделить ее во второй раз и поместить значения в правильный столбец.
Вот фрагменты того, что я уже получил:
<?php for ($i = 0; $i < sizeof($volumes); $i++) {
echo "<tr><td>" . $volumes[$i] . "</td></tr>";
} ?>
3 ответа
Когда вы визуализируете строки таблицы, вы должны разделить каждый том запятой. Я не совсем понимаю все извлеченные строки или логику вашего кода, но этот набор кода должен делать то, что вам нужно:
<?php
for ($i = 0; $i < sizeof($volumes); $i++) {
echo '<tr>';
$volumeData = explode(',', $volumes[$i]);
foreach ($volumeData as $volume) {
echo '<td>' . $volume . '</td>';
}
echo '</tr>';
}
?>
Вы уверены, что указанная вами строка верна? Я думаю, что между размером SystemReserved и меткой следующего диска отсутствует кома. Если это так - код должен выглядеть примерно так: сначала мы "взрываем" строку, чтобы создать массив, а затем используем массив, чтобы разделить его на массивы по семь записей в каждом. И затем сделать это:
$string = 'L,Logs,NTFS,Healthy,OK,9.73,9.77 ,SystemReserved,NTFS,Healthy,OK,0.16,0.49 ,C,LocalDisk,NTFS,Healthy,OK,18.19,29.74';
$array = explode(',', $string);
$results = array_chunk($array, 7, true);
?>
<table id="tbl_basic_volumes">
<tr>
<th>Buchstabe:</th>
<th>Name:</th>
<th>Filesystem:</th>
<th>Health Status:</th>
<th>Operational Status:</th>
<th>Freier Speicherplatz:</th>
<th>Gesamter Speicherplatz:</th>
</tr>
<?php
foreach ($results as $result) {
echo '<tr>';
foreach ($result as $entry) {
echo '<td>'.$entry.'</td>';
}
echo '</tr>';
}
?>
</table>
Вы можете избежать внутреннего цикла foreach, используя implode
,
$str = "L,Logs,NTFS,Healthy,OK,9.73,9.77 ,SystemReserved,NTFS,Healthy,OK,0.16,0.49 C,LocalDisk,NTFS,Healthy,OK,18.19,29.74";
$rows = explode(' ', $str);
foreach ($rows as $row) {
echo '<tr><td>' . implode('</td><td>', explode(',', $row)) . '</td></tr>';
}
Или даже заменить запятые на </td><td>
также будет работать:
$str = "L,Logs,NTFS,Healthy,OK,9.73,9.77 ,SystemReserved,NTFS,Healthy,OK,0.16,0.49 C,LocalDisk,NTFS,Healthy,OK,18.19,29.74";
$rows = explode(' ', $str);
foreach ($rows as $row) {
echo '<tr><td>' . str_replace(',', '</td><td>', $row) . '</td></tr>';
}