ホームページ >バックエンド開発 >PHPチュートリアル >json を使用すると PHP が常にエラーを報告するのはなぜですか?

json を使用すると PHP が常にエラーを報告するのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 13:13:371049ブラウズ

f855caa19778e262581e3f7faea78ee0 string(2) "ok"

["basic" ] => オブジェクト(stdClass)#2 (6)

["都市"]=> 文字列(6) "北京"

["cnty"]=> 文字列(6) "中国"

[" id "]=> 文字列(11) "CN101010100"

["lat"]=> 文字列(9) "39.904000" ["lon"]=> 文字列(10) "116.391000" ["更新" ] => オブジェクト(stdClass)#3 (2) ["loc"]=> 文字列(16) "2015-07-02 14:44"
["utc"]=> 文字列(16) ) "2015-07-02 06:46"

}

}

}

バージョンを揃えるとこんな感じ 例えば $res = json_decode($res) の「id」の値をどうやって取り出せばよいのでしょうか。この配列は?

$obj->basic->id

json_decode($json, true);
出てくるのは配列です

単一のものを抽出する方法はないようですデータ値

URLからjsonを取得すると、パッケージの後、 $res =curl_exec($ch); どのように処理されても、抽出したいフィールドの1つではなく、jsonパッケージ全体が表示されます

c64b7aef494b3f5bcc2faec3b17384b0
object(stdClass )[2]
public 'city' => 文字列 '北京' (length=6)
public 'cnty' => 文字列 '中国' (length=6)
public 'id' =>文字列 'CN101010100' (長さ=11)
パブリック 'lat' => 文字列 '39.904000' (長さ=9)
パブリック 'lon' => 文字列 '116.391000' (長さ=10)
パブリック 'update' => ;
オブジェクト(stdClass)[3]
使用する 使用する 使用する=16)


IDを取得するには、次のように記述できます

$res = '{    "status": "ok",                   "basic": {        "city": "北京",        "cnty": "中国",        "id": "CN101010100",        "lat": "39.904000",        "lon": "116.391000",        "update": {            "loc": "2015-07-02 14:44",            "utc": "2015-07-02 06:46"        }    }}';$data = json_decode($res);      //显示结果echo $data->basic->id;


CN101010100

エコー$res[key($res)][0]['now']['cond']['txt']; / /Cloudy

実際、print_r($res); とすると、次のことがわかります。 3次元で

まだ機能していないようです。あなたのメソッドを試してみましたが、何も出力できません


コメントを削除してください

$res = '{    "status": "ok",                   "basic": {        "city": "北京",        "cnty": "中国",        "id": "CN101010100",        "lat": "39.904000",        "lon": "116.391000",        "update": {            "loc": "2015-07-02 14:44",            "utc": "2015-07-02 06:46"        }    }}';var_dump(json_decode($res));      //显示结果


object(stdClass)[1]
public 'status' => 文字列 'ok' (長さ=2)
パブリック '基本' => オブジェクト(stdClass)[2]
パブリック '都市' => パブリック 'cnty' => 文字列 '中国' (長さ=6)
パブリック 'id' => 文字列 'CN101010100' (長さ=11)
パブリック '緯度' => '(長さ=9)
パブリック 'lon ' => 文字列 '116.391000' (長さ=10)
public 'update' =>
object(stdClass)[3]
public 'loc' => =16)
Public 'utc' => string '2015-07-02 06:46' (length=16)


ID を取得するには、次のように記述できます

$res = '{    "status": "ok",                   "basic": {        "city": "北京",        "cnty": "中国",        "id": "CN101010100",        "lat": "39.904000",        "lon": "116.391000",        "update": {            "loc": "2015-07-02 14:44",            "utc": "2015-07-02 06:46"        }    }}';$data = json_decode($res);      //显示结果echo $data->basic->id;


CN101010100


7 階にある私のコードとそこから天気テキストを抽出する方法を見てください

$ch = curl_init();$url = 'https://api.heweather.com/x3/weather?cityid=CN101200101&key=7081f8010abe4638a86e0c4c1cfee30e';// 执行HTTP请求curl_setopt($ch , CURLOPT_URL , $url);curl_setopt($ch , CURLOPT_SSL_VERIFYPEER , false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$res = json_decode(curl_exec($ch), true); //json_decode 要有第二个参数,这样可解析成数组echo $res[key($res)][0]['now']['cond']['txt'], PHP_EOL; //为什么要这样写,看看 print_r 的输出就知道了print_r($res);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。