我正在尝试使用Hash::extract方法在CakePHP中提取JSON格式字符串的某些部分。
这是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"}}]]
以下是我在CakePHP中用于检索上述JSON的内容:
debug(json_encode(Hash::extract($data['type'], '{s}')));
$data['type']
包含上述数据。
有没有办法可以只获取type
值?不知道我怎么能在CakePHP中做到这一点。如果有人可以提供帮助,我将不胜感激。
答案 0 :(得分:0)
从Roberto Atkinson的answer开始,您必须首先将json_decode()
转换为将JSON字符串转换为PHP数组,而不是将数组编码为JSON。参考: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(),第一个参数应该是一个数组。
参数(array | ArrayAccess $ data要从中提取的数据。,string $ path要提取的路径。)