检查对象/数组是否为空

时间:2013-12-04 05:08:34

标签: php

我试图检查以下内容是否为空。

{"players":""}

我有一个函数可以从api / site获取,并且......嗯,这是代码。

function getPlayers($server) {
    // Fetches content from url and json_decodes it
    $playersList = getUrl('http://api.iamphoenix.me/list/?server_ip=' . $server);
    // Attempting to check if it's empty.
    if ($playersList != "") {
        // convert list of comma-separated names into array
        $players = explode(',', $playersList->players);
        foreach ($players as $player) {
            echo '<img title="'.$player.'" src="https://minotar.net/avatar/'.$player.'/32">';
        }
    } else {
        return 'empty';
    }
}

但是,使用!=empty()isset(),我仍会得到一个空字符串,例如:

https://minotar.net/avatar//32

它应该在哪里..

https://minotar.net/avatar/Notch/32

如果它是空的,我希望它能够返回“空白”。

我不确定我做错了什么。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

在纯php中,你可以查看网址段,如

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', $_SERVER['REQUEST_URI_PATH']);

if($segments[2] == '') { 
}
//or
if(empty($segments[2])) { 
}

//or do your condition

如果你使用的是codeigniter,你可能会说

if(empty($this->uri->segment(2)))

但请务必加载url helper

希望我理解你的问题!

答案 1 :(得分:0)

试试这个

if(isset($ playersList)&amp;&amp; is_array($ playersList)&amp;&amp;!empty($ playersList)){

    // convert list of comma-separated names into array
    $players = explode(',', $playersList->players);
    foreach ($players as $player) {
        echo '<img title="'.$player.'" src="https://minotar.net/avatar/'.$player.'/32">';
    }
} else {
    return 'empty';
}

答案 2 :(得分:0)

你应该这样做;

print_r($playersList);

在您设置它之后看它实际是什么。我的猜测是,你没有从getURL电话中得到你怀疑的东西。

答案 3 :(得分:0)

再添加一个等号以将类型比较纳入帐户

if ($playerList !== '')

答案 4 :(得分:0)

由于您可以获得一些输出,请参阅我在代码中的更改。

function getPlayers($server) {
    // Fetches content from url and json_decodes it
    $playersList = getUrl('http://api.iamphoenix.me/list/?server_ip=' . $server);
    // Attempting to check if it's empty.
    if ($playersList != "") {
        // convert list of comma-separated names into array
        $players = explode(',', $playersList->players);
        // check conversion
        if(is_array($players) && !empty($players){
            foreach ($players as $player) {
                echo '<img title="'.$player.'" src="https://minotar.net/avatar/'.$player.'/32">';
            }
        } else {
            return 'empty';
        }
    } else {
        return 'empty';
    }
}