Хорошо, у меня есть строка, которую нужно разделить 2 раза. Первый раз пробелами, второй раз запятыми. Так что я могу положить его в таблице.
Мне удалось разбить строку по пробелам и поместить ее в первый столбец таблицы, но я изо всех сил пытаюсь разбить ее во второй раз и поместить значения в правильный столбец.
Вот фрагменты того, что я уже получил:
<?php for ($i = 0; $i < sizeof($volumes); $i++) {
echo "<tr><td>" . $volumes[$i] . "</td></tr>";
} ?>
@Андреас, мой плохой .. я немного поторопился. Он обновлен






Когда вы визуализируете строки таблицы, вы должны разделить каждый том запятой. Я не совсем понимаю все извлеченные строки или какова логика вашего кода, но этот набор кода должен делать то, что вам нужно:
<?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>
Спасибо за Ваш ответ! Как я понял array_chunk, я не могу его использовать из-за параметра размера. Мне нужно, чтобы это было динамично. Ответ Матея Михая - это именно то, что мне нужно.
Вы можете выйти из внутреннего цикла 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>';
}
Хорошо... И вы предполагаете, что мы знаем, в чем заключается ваш вопрос или проблема? А что делает
splitStringByWhitespace? Мы можем догадываться, но было бы неплохо знать.