如何将 PHP shell_exec 结果显示为 html table?

How can I display PHP shell_exec results into a html table?

我有一个 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 table,但是由于每次结果的数量可能不同,并且需要将它们分为 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>

使用 array_chunk,你确实已经拥有了大部分你需要的东西,你只需要 foreach 你的结果数组,并使用一点点 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>