【问题标题】:Check if object/array is empty检查对象/数组是否为空
【发布时间】:2013-12-04 05:08:33
【问题描述】:

我正在尝试检查以下是否为空。

{"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

当它为空时,我希望它只返回“空”。

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

【问题讨论】:

标签: php


【解决方案1】:

在纯 php 中,您可以检查 url 段,如

$_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

希望我能理解你的问题!

【讨论】:

    【解决方案2】:

    由于您能够获得一些输出,请查看我对代码的更改。

    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';
        }
    }
    

    【讨论】:

      【解决方案3】:

      你应该这样做;

      print_r($playersList);
      

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

      【讨论】:

        【解决方案4】:

        再添加一个等号以考虑类型比较

        if ($playerList !== '')
        

        【讨论】:

          【解决方案5】:

          试试这个

          if (isset($playersList) && is_array($playersList) && !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';
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-29
            • 1970-01-01
            相关资源
            最近更新 更多