我试图将变量名与数组中的项匹配,并根据匹配的值设置变量颜色(即传递为绿色,失败为红色)。我不确定为什么没有正确评估if条件。
<style type="text/css">
table {
font-family: arial, sans-serif;
border: 1px solid black;
font-size: 12px;
white-space:pre-wrap;
word-wrap:break-word;
text-decoration:none;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
white-space:pre-wrap;
word-wrap:break-word;
}
.red {
color: #FF0000;
}
.green {
color: #008000;
}
</style>
<?php
header("My Dashboard");
$homdir = "/var/www/html/myfolder/";
$di = new RecursiveDirectoryIterator($homdir);
foreach (new RecursiveIteratorIterator($di) as $filename => $file) {
if (pathinfo($filename, PATHINFO_EXTENSION) == "html") {
$lines = file($filename);
echo nl2br($lines[1]);
}
if (pathinfo($filename, PATHINFO_FILENAME) == "Results") {
echo '
<br /> </p>
<table summary="My Table">
<tr>
<th>Test</th>
<th>Results</th>
</tr> <br /> </p>';
$fp = fopen($filename, 'r');
if (!$fp) {
echo 'ERROR: Unable to open file.</table></body></html>';
exit;
}
$row = 0;
while (!feof($fp)) {
$row++;
$line = fgets($fp, 1024); //use 2048 if very long lines
$field[$row] = explode(' ', $line);
}
fclose($fp);
$arrays = count($field) - 1;
$loop = 0;
$passvalue="PASSED";
$failvalue="FAILED";
while ($loop < $arrays) {
if ($field[$loop][2] == $passvalue) {
$color="red";
} elseif ($field[$loop][2] == $failvalue) {
$color="green";
}
$loop++;
echo '
<tr>
<td><a href="' . $field[$loop][1] . '" class='.$color'>' . $field[$loop][0] . '</a></td>
<td>' . $field[$loop][2] . '</td>
</tr>';
}
}
}
?>
示例平面文件(我正在阅读),如果它失败则突出显示为红色的TestURL;如果它已通过则突出显示为绿色。
Test1 TestURL PASSED
Test2 TestURL FAILED
Test3 TestURL PASSED
Test4 TestURL PASSED
答案 0 :(得分:0)
用foreach循环替换你的while循环:
while (!feof($fp)) {
$row++;
$line = fgets($fp, 1024); //use 2048 if very long lines
$fields[$row] = explode(' ', $line);
}
fclose($fp);
foreach( $fields as $item )[
if( $item[2] == 'PASSED' ){
$color = 'color: #008000;';
} elseif ( $item[2] == 'FAILED' ){
$color = 'color: #FF0000;';
}
echo '
<tr>
<td><a href="' . $item[1] . '" style="'.$color'">' . $item[0] . '</a></td>
<td>' . $item[2] . '</td>
</tr>';
}
答案 1 :(得分:0)
感谢大家的帮助。深入挖掘后我发现字符串中有一个额外的空白区域,因此模式匹配总是失败,但是当我在屏幕上打印它时我没有发现任何错误。所以在程序中没有任何问题,为了解决这个问题,我使用trim(http://php.net/manual/en/function.trim.php)函数删除了额外的空格,然后比较了实际解决了这个问题的字符串。