Почему если (условие) не работает с '{""}' ' - PullRequest
0 голосов
/ 05 февраля 2019

Я устанавливаю код PHP, который берет некоторую информацию из Bash и помещает их в PHP.Мой оператор If не сортирует то, что я пишу или получаю из bash.

Это для сервера Apache2 в Linux.Я пытался поместить мою строку, которую я хочу использовать в моем состоянии, в переменную.

GameToken = `grep "Matching server game" "${FactorioServerLogPath}" 2> /dev/null | awk '{print $7}' | tail -1 | tail -c +2 | head -c -2`;

$GameState = `curl -s -X GET -H "Content-type: application/json" -H "Accept: application/json" "https://multiplayer.factorio.com/get-game-details/$GameToken"`;

if ( $GameState != '{"message":"no game for given game_id"}' ) {
  echo "<h2> The Server is up and running </h2>";
} else {
  echo "<h2> The Server is currently turned off </h2>";
}

Выходной поток должен выглядеть так, как будто сервер в данный момент выключен, когда переменная $ GameState не похожа на {"сообщение ":" нет игры для данного game_id "}.

1 Ответ

0 голосов
/ 05 февраля 2019

Может быть, вам следует сначала декодировать его, а затем попытаться проверить, если условие:

пример:

$arr = json_decode($GameState, true);

if(array_key_exists('message', $arr) && $arr['message'] == 'no game for given game_id'){
     //do what you want
}

или, может быть, гораздо лучше сделать это:

$arr = json_decode($GameState, true);

if(array_key_exists('message', $arr)){
    if($arr['message'] != 'no game for given game_id'){
        echo "<h2> The Server is up and running </h2>";
    }else{
        echo "<h2> The Server is currently turned off </h2>";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...