PHP-file_get_contents:无法在单个if语句中检查两个file_get_contents

时间:2019-01-21 06:49:06

标签: php if-statement file-get-contents

我正在通过相同的if语句运行两个api调用,以确保它们都返回值。错误检查的一种形式。

它们都通过了测试,但是file_get_contents无法访问或解码第一个json_decode

    if (
      $exchangeRates = (file_get_contents('https://api.coinbase.com/v2/exchange-rates'))
      &&
      $data = (file_get_contents('https://api.coinbase.com/v2/prices/spot?currency=USD'))
    ){

    $json1 = json_decode($exchangeRates, true);
    $json2 = json_decode($data, true);

    return [$json1, $json2];
}

以上返回:

[
 1,
 {
  "data": 
   {
   "base": "BTC",
   "currency": "USD",
   "amount": "3532.335"
   }
 }
]

当我在$json1中引用单个值时,它们将返回null。

将网址手动输入到网址中后,它们都会返回相应的JSON。

每个if语句只能使用一个file_get_contents吗?

1 个答案:

答案 0 :(得分:3)

请检查Operator Precedence&&的优先级较高,因此它首先执行get_file_contents,然后使用&&并返回$ exchangeRates。最后,$ exchangeRates是布尔值。在这种情况下,您应该正确使用():

    if (
($exchangeRates = file_get_contents('https://api.coinbase.com/v2/exchange-rates'))
    &&
($data = file_get_contents('https://api.coinbase.com/v2/prices/spot?currency=USD'))
) {

    $json1 = json_decode($exchangeRates, true);
    $json2 = json_decode($data, true);

    return [$json1, $json2];
}