CakePHP哈希从JSON数据中提取

时间:2016-09-25 17:39:15

标签: php json cakephp hash

我正在尝试使用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中做到这一点。如果有人可以提供帮助,我将不胜感激。

1 个答案:

答案 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要提取的路径。)