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

PHP-file_get_contents: Unable to check two file_get_contents in a single if statement

我 运行 两个 api 调用通过相同的 if 语句来确保它们都是 return 值。一种错误检查形式。

他们都通过了测试,但是第一个 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];
}

以上returns:

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

当我在 $json1 中引用单个值时,它们 return 为空。

当 url 手动输入 url 时,它们都会 return 适当的 JSON。

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

请检查 Operator Precedence&& 优先级较高,因此它首先执行 get_file_contents,然后使用 && 和 returns 到 $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];
}