0

Im new to json & php and I'm having some issues with json into php string

My json string looks like this

{"status":"OK","cards":
[{"id":100001,"name":"batman","image":11111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T11:37:07Z"},
{"id":100002,"name":"superman","image":111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T12:30:09Z"},
{"id":100003,"name":"catwoman","image":1111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T12:39:42Z"},
{"id":100004,"name":"bane","image":1111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-09-08T12:56:04Z"}
]}

So Far i have created my string

$json_raw = '{"status":"OK","cards": [{"id":100001,"name": .....

Decoded the json

$arr = json_decode($json_raw, TRUE);

I var_dump($arr);

then it returns

array(2) { ["status"]=> string(2) "OK" ["cards"]=> array(4) { [0]=> array(8) { ["id"]=> int(100001) ["name"]=> string(6) "batman" ["image"]=> int(11111) ["size"]=> int(75) ["region_id"]=> int(1) ["locked"]=> bool(false) ["status"]=> string(6) "active" ["created_at"]=> string(20) "2013-08-15T11:37:07Z" } [1]=> array(8) { ["id"]=> int(100002) ["name"]=> string(8) "superman" ["image"]=> int(111111) ["size"]=> int(75) ["region_id"]=> int(1) ["locked"]=> bool(false) ["status"]=> string(6) "active" ["created_at"]=> string(20) "2013-08-15T12:30:09Z" } [2]=> array(8) { ["id"]=> int(100003) ["name"]=> string(8) "catwoman" ["image"]=> int(1111111) ["size"]=> int(75) ["region_id"]=> int(1) ["locked"]=> bool(false) ["status"]=> string(6) "active" ["created_at"]=> string(20) "2013-08-15T12:39:42Z" } [3]=> array(8) { ["id"]=> int(100004) ["name"]=> string(4) "bane" ["image"]=> int(1111111) ["size"]=> int(75) ["region_id"]=> int(1) ["locked"]=> bool(false) ["status"]=> string(6) "active" ["created_at"]=> string(20) "2013-09-08T12:56:04Z" } } } 

Now all I want to do is be able to use this data

e.g if name = batman then

I know this is a stupid question but I am struggling :(

Thank in Advance

4

3 に答える 3

2

json_decode()2 番目のパラメーターとしてwithTRUEを使用すると、連想配列が得られます。必要なことを行うには、正しいインデックスにアクセスする必要があります。

完全な連想配列を適切な書式で一覧表示するには、次のようにします。

echo '<pre>', print_r($arr), '</pre>';

name次に、配列内の にアクセスするには:

$man = $arr['cards'][0]['name'];

それがBatman(イェーイ!)かどうかを確認するには:

if( isset($man) && $man == 'batman' ) {
    # code ...
}

すべての類似した名前の名前を取得するには:

$man = $json['cards']['0']['name'];
for ($i=0; $i < count($json['cards']); $i++) { 
    echo $json['cards'][$i]['name']."\n";
}

生で見よう!

于 2013-09-22T14:20:56.710 に答える
0

試してみてください:

$cards = $arr['cards'];
foreach($cards as $card) {
    if($card['name'] == 'batman') echo 'Hello batman!';
}

編集:

わかりましたので、これは上記のコードを使用してうまくいきました。必要に応じて自分で試してください。

<?php

$json_raw = '{"status":"OK","cards":
[{"id":100001,"name":"batman","image":11111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T11:37:07Z"},
{"id":100002,"name":"superman","image":111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T12:30:09Z"},
{"id":100003,"name":"catwoman","image":1111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-08-15T12:39:42Z"},
{"id":100004,"name":"bane","image":1111111,"size":75,"region_id":1,"locked":false,"status":"active","created_at":"2013-09-08T12:56:04Z"}
]}';


$arr = json_decode($json_raw, TRUE);

$cards = $arr['cards'];
foreach($cards as $card) {
    if($card['name'] == 'batman') echo 'Hello batman!';
}

?>
于 2013-09-22T14:22:44.453 に答える