Как я могу отобразить результаты PHP shell_exec в HTML-таблицу? - PullRequest
1 голос
/ 13 марта 2019

У меня есть команда PHP shell_exec, которая выводит 5 строк данных для каждого результата, если shell_exec имеет 1 результат, она выведет 5 строк примерно так:

john
richmond
27
london
dogs

Команда может иметь более1 результат, вот пример 3-х результатов:

    john
    richmond
    27
    london
    dogs
    dave
    archibold
    34
    new york
    cats
    harry
    harris
    33
    dublin
    fish

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

| Name  | Surname   | Age | City    | Pet        | 
--------------------------------------------------
| john  | richmond  | 27  | london  | dogs cat   |
| dave  | archibold | 34  | newyork | cats cow   |
| harry | harris    | 33  | dublin  | fish horse |

Из моего собственного исследования я думаю, что мне, возможно, придется использовать php explode и создать массив, я пришел к следующему, однако не уверен, как реализоватьforeach и что еще мне нужно, чтобы он работал:

<div class="table-responsive">
<?php
$str = shell_exec( "shell command" );
$arr = explode(PHP_EOL, $str); 
$arr = array_chunk($arr,5); 
foreach *

?>

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Surname</th>
            <th>Age</th>
            <th>City</th>
            <th>Pet</th>
        </tr>
    </thead>
    <tbody>
    <?php foreach(*) { ?>
    <tr class="1">
    <td class="1">
         <i class="cc <?php echo $name;?></i>
    </td>
    <td class="1">
         <i class="cc <?php echo $surname;?></i>
    </td>
    <td class="1">
         <i class="cc <?php echo $age;?></i>
    </td>
    <td class="1">
         <i class="cc <?php echo $city;?></i>
    </td>
    <td class="1">
         <i class="cc <?php echo $pet;?></i>
    </td>
    </tr>
    </tbody>
 </table>
 </div>

1 Ответ

0 голосов
/ 13 марта 2019

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

Короче говоря, то, что делает list, это берет элементы массива один за другим и присваивает их переменным, которые вы определили бы в своем операторе list.

<div class="table-responsive">
    <?php 
        $array = array_chunk(
            explode(
                PHP_EOL, 
                shell_exec( "shell command" )
            ),
            5
        ); 
    ?>
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Surname</th>
                <th>Age</th>
                <th>City</th>
                <th>Pet</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach($array as $element) { ?>
                <?php list($name, $surname, $age, $city, $pet) = $element; ?>
                <tr class="1">
                    <td class="1">
                         <i class="cc"><?php echo $name ?></i>
                    </td>
                    <td class="1">
                         <i class="cc"><?php echo $surname ?></i>
                    </td>
                    <td class="1">
                         <i class="cc"><?php echo $age ?></i>
                    </td>
                    <td class="1">
                         <i class="cc"><?php echo $city ?></i>
                    </td>
                    <td class="1">
                         <i class="cc"><?php echo $pet ?></i>
                    </td>
                </tr>
            <?php } ?>
        </tbody>
    </table>
</div>
...