我有一个PHP shell_exec命令,输出以下内容:
Cats
3
Dogs
9
Fish
2
第二行是一个数字,与上一行中的动物名称相对应,例如,我想要HTML表中的输出:
HTML TABLE
------------
| Cats | 3 |
| Dogs | 9 |
| Fish | 2 |
------------
我认为我需要创建一个数组,但是我不确定如何将动物的名称和数字对齐到同一行。目前我有这个:
<?php
$array1 = array();
exec( "Command", $Output );
?>
<html>
<table>
<tr>
<th>Animal</th>
<th>Number</th>
</tr>
<tr>
<td>*</td>
<td>*</td>
</tr>
<tr>
<td>*</td>
<td>*</td>
</tr>
<tr>
<td>*</td>
<td>*</td>
</tr>
</tr>
</table>
</body>
</html>
如何将其放入HTML表格?
答案 0 :(得分:1)
使用explode
转换为数组后,可以使用array-chunk将其转换为数组。
$str = 'Cats
3
Dogs
9
Fish
2';
$arr = explode(PHP_EOL, $str); //break each line
$arr = array_chunk($arr,2); // group each pair
foreach($arr as $e)
$res[$e[0]] = $e[1]; // group each pair as key and value
print_r($res);
这将输出:
Array
(
[Cats] => 3
[Dogs] => 9
[Fish] => 2
)
您现在可以通过循环foreach($res as $animal => $number)
您的HTML应该是:
<table>
<tr>
<th>Animal</th>
<th>Number</th>
</tr>
<?php foreach($res as $animal => $number)
echo '<tr><td>'. $animal . '</td><td>' . $number . '</td></tr>'; ?>
</table>
答案 1 :(得分:0)
您可以使用preg_split()函数将字符串沿换行符拆分为一个数组,然后一次遍历两个数组,并在每次循环时将前两个移开。
<table>
<?php
$Output = <<< EOF
Cats
3
Dogs
9
Fish
2
EOF;
$animals = preg_split('/[\n\r]+/', trim($Output));
while (!empty($animals)) {
echo "<tr>\n";
echo "<td>{$animals[0]}</td>\n";
echo "<td>{$animals[1]}</td>\n";
echo "</tr>\n";
array_shift($animals);
array_shift($animals);
}
?>
</table>