如果玩家阵列为空,则回显“No Players Online”

时间:2012-08-04 09:31:05

标签: php list

我想要它,以便如果阵列中有玩家,它将返回图片。这到目前为止工作。什么行不通的是当数组中没有玩家时,它将返回一张空白图片,不会回显"No Players Online"

$query = (Minequery::query("67.202.102.224"));
$plist = $query['playerList'];
foreach($plist as $k => $v)
    // print_r(Minequery::query_json("67.202.102.224"));
    if (defined($plist)){
        echo'<img src="http://minotar.net/avatar/'.$v.'" title="'.$v.'" height="50"     width="50">  '; 
    } else {
        echo 'No Players Online';
    }   

2 个答案:

答案 0 :(得分:4)

你有一辆车放在马前:

$query = (Minequery::query("67.202.102.224"));
$plist = $query['playerList'];
foreach($plist as $k => $v)
    //print_r(Minequery::query_json("67.202.102.224"));
    if (defined($plist)){
        echo'<img src="http://minotar.net/avatar/'.$v.'" title="'.$v.'" height="50"            width="50">  ';  
    }
    else {
        echo 'No Players Online';
    } 

在您开始尝试迭代它之后,您正在检查数组是否包含内容。试试这个:

$query = (Minequery::query("67.202.102.224"));
$plist = $query['playerList'];
if (!empty($plist)) {
    foreach($plist as $k => $v) {
        echo '<img src="http://minotar.net/avatar/'.$v.'" title="'.$v.'" height="50" width="50">  ';  
    }
}
else {
    echo 'No Players Online';
}

答案 1 :(得分:0)

空数组(例如array())等于false,这意味着使用简单的if子句可以处理:

if ($plist) {
    echo '<img src="http://minotar.net/avatar/'.$v.'" title="'.$v.'" height="50" width="50"> ';  
} else {
    echo 'No Players Online ';
}

但是,在循环之前需要先检查一下:

if (!$plist) {
    echo 'No Players Online';
} else {
    foreach($plist as $k => $v) {
        echo '<img src="http://minotar.net/avatar/'.$v.'" title="'.$v.'" height="50" width="50">';
    }
}
  

注意:您需要最新版本的minequery-php才能正常运行。有一个错误已得到修复。现在

如果你在HTML中使用$v,那么也要注意{{1}}应该正确编码 - 而不是它包含HTML,然后你的HTML就会被打破。请参阅htmlspecialchars

与您使用的URL类似,如果您没有对其进行正确的URL编码,则URL可能会被破坏。请参阅urlencode