2016-09-25 11 views
1

Hash::extractメソッドを使用して、CakePHPでJSON形式の文字列の一部を抽出しようとしています。ここでJSONデータからのCakePHPハッシュ抽出

はJSON文字列である:ここで

[[{"name":"Atkins Global","y":{"count":96,"type":"1"}}, 
{"name":"HFT","y":{"count":444,"type":"1"}}, 
{"name":"Catalyst","y":{"count":8,"type":"1"}}, 
{"name":"BGL","y":{"count":2,"type":"1"}}]] 

は、私は上記のJSONを取得するためにCakePHPで使用されるものです:

debug(json_encode(Hash::extract($data['type'], '{s}'))); 

$data['type']は、上記のデータを保持しています。

type値を取得する方法はありますか。 CakePHPでこれをどのように行うことができるのかよくわかりません。誰でも手伝っていただければ幸いです。

+0

あなたは、フォーマットに元のデータの代わりに、抽出されたものを(示し、してください必要がありますファッション、ネストされた構造を読むことは、そうしたように平坦化されているときは本当に難しい)。 – ndm

答えて

0

Roberto Atkinsonのanswerから、配列をJSONにエンコードする代わりに、json_decode()を最初にJSON文字列をPHP配列に変換する必要があります。参考:お使いの場合にはjson_decode()

、試してみてください。

//from JSON string to PHP array; force returned objects to be converted into associative arrays 
$data['type'] = json_decode($data['type'], true); 

//now you can extract type values from data 
$output = Hash::extract($data['type'], '{s}')); 

さらには、CakePHP official API documentation: Hash::extract()によると、最初のパラメータは配列でなければなりません。

パラメータ(配列|。。ArrayAccessの$データデータから抽出するには、文字列$パスパスが抽出する)

関連する問題