2013-12-04 7 views
0

Я пытаюсь проверить, пустое или нет.Проверьте, нет ли объекта/массива

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

Когда он пуст, Я бы хотел, чтобы он просто возвращался «пустым».

Я не уверен, что я делаю неправильно. Есть идеи?

+0

Вы пробовали 'if (! Empty ($ player)) {' в 'foreach'? –

+0

Я думаю, что функция getUrl возвращает объект данных, а не массив данных. – HTTP

+0

Возможный дубликат [Как проверить, что объект пуст в PHP] (http://stackoverflow.com/questions/9412126/how-to-check-that-an-object-is-empty-in-php) – kenorb

ответ

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

попробовать это

если (Исеть ($ playersList) & & is_array ($ playersList) & & пусто ($ 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'; 
} 
0

Вы должны сделать это;

print_r($playersList); 

как раз после того, как вы установили его, чтобы узнать, что это на самом деле. Я предполагаю, что вы не получаете то, что подозреваете в вызове getURL.

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

Надежда Я понимаю, ваш вопрос!

0

Добавить еще один знак равенства взять сравнение типа во внимание, а

if ($playerList !== '') 
Смежные вопросы