【问题标题】:Type of 'json' response is boolean in PHP“json”响应的类型在 PHP 中是布尔值
【发布时间】:2018-10-17 07:49:05
【问题描述】:

我正在使用以下内容:

<?php
$url = '...';
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST => "GET"
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

$response = json_decode($response, true);
echo gettype($response); /$response/ THIS RETURNS INTEGER FOR SOME REASON!
?>

所以我得到的$response 是整数类型,我无法读取这个 JSON 的元素。

另请注意,当我回显响应时,会在其后打印 1。

【问题讨论】:

  • 您可以 print_r($response) 并将其添加到您的问题中吗?
  • “出于某种原因,此返回整数!” — 大概是因为 JSON 由一个整数组成。你期望它是什么?提供minimal reproducible example 怎么样(这需要示例输入才能完成)
  • 我想重申一下,我没有否决您的问题
  • @TobiasGassmann 好的,谢谢。我不明白是什么引起了投票反对。我的问题不合适吗?无论如何,Yoshi 似乎帮助了我,所以谢谢大家。
  • 正如 Quentin 所写,在您的问题中包含 MCVE。没有它,问题是不完整的,并且会被否决。

标签: php json curl php-curl


【解决方案1】:

查看手册以获取可能的return values。你至少需要使用CURLOPT_RETURNTRANSFER

成功时返回 TRUE,失败时返回 FALSE。但是,如果 设置了 CURLOPT_RETURNTRANSFER 选项,它将返回结果 成功,失败为 FALSE。

<?php
$url = '...';
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_RETURNTRANSFER => true  // <<<< add this
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

$response = json_decode($response, true);

if (json_last_error() !== JSON_ERROR_NONE) {
    var_dump(json_last_error_msg());
}

【讨论】:

  • 谢谢,就是这样。
【解决方案2】:

'$result' 没有在你的代码中定义,仔细检查一下? 也许是“$response = json_decode($response, true);”这一行需要改变。 未定义变量的默认值为 NULL/False

【讨论】:

  • 我编辑了我的问题。这不是问题,我得到的类型是 $response 而不是 $result。
  • 函数 curl_exec 返回一个真/假值,即存储在 $response 中的值。那是你想检查的吗?见:php.net/manual/en/function.curl-exec.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 2018-02-09
相关资源
最近更新 更多