Разбейте строку 2 раза и положите в стол - PullRequest
0 голосов
/ 11 февраля 2019

Хорошо, у меня есть строка, которую нужно разделить 2 раза.Первый раз через пробелы и второй раз через запятую.Таким образом, я могу поместить это в таблицу.

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

Вот фрагменты того, что я уже получил:

<?php for ($i = 0; $i < sizeof($volumes); $i++) {
    echo "<tr><td>" . $volumes[$i] . "</td></tr>";
} ?>

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Вы уверены, что указанная вами строка верна?Я думаю, что между размером 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>
0 голосов
/ 11 февраля 2019

Вы можете выйти из внутреннего цикла 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>';
}
0 голосов
/ 11 февраля 2019

Когда вы визуализируете строки таблицы, вы должны разделить каждый том запятой.Я не совсем понимаю все извлеченные строки или логику вашего кода, но этот набор кода должен делать то, что вам нужно:

<?php 
    for ($i = 0; $i < sizeof($volumes); $i++) {
        echo '<tr>';
        $volumeData = explode(',', $volumes[$i]);
        foreach ($volumeData as $volume) {
            echo '<td>' . $volume . '</td>';
        }
        echo '</tr>';
    }
?>
...