2014-02-09 100 views
1

我试图获取数据并在json中将其转换为与高图表一起使用。为json值删除双引号

这里是我的代码:

$arr = $this->Company->find('all'); // fetch the array 
    $arr1 = array(); 
    foreach ($arr as $value) { 
     $tmp = array(); 

     $tmp['name'] = $value['Company']['nome']; 
     $tmp['data'] = '['. count($value['Branch']) .']'; 

     $arr1[] = $tmp; 
     } 
    $json = json_encode($arr1); 
    $json = preg_replace('/"([^"]+)"\s*:\s*/', '$1:', $json); 
    debug($json); 

而且我atual JSON:

'[{name:"Sotreq",data:"[11]"},{name:"Somov",data:"[1]"},{name:"Soimpex",data:"[0]"}]' 

我用preg_replace删除键的双引号。我想要删除数据值的双引号。 请帮忙?

+0

你为什么要这么做? '{data:[11]}'不同于'data:“[11]”' – Rangad

+0

我正尝试使用highchart PIE类型:http://www.highcharts.com/demo/pie-basic 。出于某种原因,引用这不起作用。 –

+0

[Ben Hitchcock](http://stackoverflow.com/users/1544013/ben-hitchcock)答案对于数据排队应该是正确的。使用未加引号的对象键似乎违反规范:[a](http://stackoverflow.com/a/949476/2912456)。 – Rangad

回答

2

替换这一个数据线:

$tmp['data'] = array(count($value['Branch'])); 

什么是你与另一端的JSON在做什么?通常你根本不需要做任何正则表达式,这是疯狂的方式。

关键字段中的双引号是好的,并且是可选的。它应该使用或不使用引号。

+0

太简单了! :上帝感谢 –