ステータスがオフラインまたは遅延に設定されている場合に基本的にLIを表示するために、次のPHPを作成しました。
<?php
if(count($rows) > 0) {
foreach($rows as $row)
{
$service = $row->service;
$details = $row->status_details;
$status = $row->status;
// status image check
if($status == "ONLINE")
{
$symbol = "online.png";
}
if($status == "OFFLINE")
{
$symbol = "offline.png";
}
if($status == "DELAY")
{
$symbol = "delay.png";
}
?>
<li class="<?php echo $status; ?>">
<img src="<?php echo $moduleLoc, $symbol;?>" alt="Service Status <?php echo $service; ?>" /> <span class="details"><?php echo $details; ?></span></li>
</li>
<?php
}
?>
<?php } ?>
CSSを使用して、「ONLINE」のクラスが表示された場合、LIは非表示になります。
ただし、ステータスがOFFLINEまたはDELAYの場合に表示されるステートメントを追加したいので、次のように記述しました。これは機能しますが、foreachステートメントにより、OFFLINEまたはDELAYのあるすべてのLIに対して表示されます。一度だけ表示したい:
<?php
if(($status == "OFFLINE") || ($status == "DELAY")){
echo '<li class="systemsGo"><img src="' . $moduleLoc . 'online.png" alt="Online Update" /><span class="details">All Other Applications Are Working Well</span></li>';
}
?>
右、私は1つの方法を考え出しました。
まず、変数を配列として定義する必要があります。
$get_status = array();
次に、foreach
ループで、次のように、新しく定義された配列のすべての結果のステータスを組み合わせる必要があります。
foreach ($rows as $row)
{
$get_status[] = $status;
}
foreach
ループの後、次のように配列を抽出する必要があります。
extract($get_status);
次に、配列内のすべてのステータスがすべて同じかどうかを確認し、次のようにメッセージを表示できます。
if (count(array_unique($get_status)) === 1 && end($get_status) === 'ONLINE')
{
echo 'All systems are online';
}
if (count($rows) > 0)
{
$get_status = array();
foreach ($rows as $row)
{
$service = $row->service;
$details = $row->status_details;
$status = $row->status;
$symbol = '';
// status image check
if ($status == 'ONLINE')
{
$symbol = 'online.png';
}
if ($status == 'OFFLINE')
{
$symbol = 'offline.png';
}
if ($status == 'DELAY')
{
$symbol = 'delay.png';
}
$get_status[] = $status;
?>
<li class="<?php echo $status; ?>">
<img src="<?php echo $moduleLoc, $symbol;?>" alt="Service Status <?php echo $service; ?>" />
<span class="details"><?php echo $details; ?></span>
</li>
<?php
}
extract($get_status);
if (count(array_unique($get_status)) === 1 && end($get_status) === 'ONLINE')
{
echo 'All systems are online';
}
else if (count(array_unique($get_status)) === 1 && end($get_status) === 'OFFLINE')
{
echo 'All systems are offline';
}
else if (count(array_unique($get_status)) === 1 && end($get_status) === 'DELAY')
{
echo 'All systems are delayed';
}
else
{
echo 'Not the same';
}
}
お役に立てれば
PS:二重引用符を一重引用符で置き換えるなど、いくつかのマイナーな調整を行い、$symbol
if
ステートメントの外側、$status
が一致しません(そうでない場合、PHPエラーがスローされます)