2

我想要它,以便如果数组中有玩家,它将与图片一起返回。到目前为止有效。不行的是,当数组中没有玩家时,它会返回一张空白图片,并且不会 echo "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';
    }   
4

2 回答 2

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';
}
于 2012-08-04T09:40:05.823 回答
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应该正确编码 - 而不是它包含 HTML,然后您的预期 HTML 会被破坏。见htmlspecialchars

与您使用它的 URL 类似,如果您没有正确地对其进行 URL 编码,则该 URL 可能会损坏。见urlencode

于 2012-08-04T09:36:03.993 回答