2017-04-15 171 views
1

首先,我正在嘗試使用谷歌圖表api創建一個餅圖。在那裏,我必須提供一個數組的javascript數組。現在我在服務器端是以下結構的PHP數組:轉換php二維數組

[ 
    { 
    "name": "a", 
    "price": 25200 
    }, 
    { 
    "name": "b", 
    "price": 13500 
    } 
] 

我需要的是:

[ 
    [ 
    "a": 25200 
    ], 
    [ 
    "b": 13500 
    ] 
] 

我有什麼迄今爲止 - 使用下面的PHP函數轉換。

public function convert($packages){ 
    $packageShare = array(array()); 
    $count = count($packages); 
    for($i = 0; $i < $count; $i++){  
     $pack = array(); 

     $pack[$packages[$i]['name']] = $packages[$i]['price']; 

     $packageShare[$i] = $pack; 
    } 
    return $packageShare; 
} 

但輸出不是我想要的。以下是上述功能返回的內容:

[ 
    { 
    "a": 25200 
    }, 
    { 
    "b": 13500 
    } 
] 

N.B.我需要喂這個數組在google chart api這需要在JavaScript中這樣的東西。

[[0,0],[1,10],[2,12]]

什麼都可以標準的方式喂?

+0

JSON數組,你的PHP是產生應該管用。查看[此鏈接](https://developers.google.com/chart/interactive/docs/php_example)。你得到的錯誤是什麼? –

回答

1

爲[[0,0],[1,10],[2,12]的格式,它的陣列的陣列。你可以用

$output = array_map(function($v){return [$v['name'], $v['price']];}, $array); 
print_r(json_encode($output)); 

輸出得到這樣的:

[["a",25200],["b",13500]] 

這裏也是其他格式,

<?php 
     //Enter your code here, enjoy! 
$array = array(array('name'=>'a', 'price'=>25200),array('name'=>'b', 'price'=>13500)); 
print_r(json_encode($array)); 
echo "\n"; 
$output = array_map(function($v){return [$v['name'], $v['price']];}, $array); 
print_r(json_encode($output)); 
echo "\n"; 
$output1 = array_map(function($v){return array($v['name'] => $v['price']);}, $array); 
print_r(json_encode($output1)); 
echo "\n"; 

輸出:

[{"name":"a","price":25200},{"name":"b","price":13500}] 
[["a",25200],["b",13500]] 
[{"a":25200},{"b":13500}] 
0
public function convert($packages){ 
    $a = json_decode($packages,true); 
    $count = sizeof($a); 
    for($i = 0; $i < $count; $i++){  
     $b[][$a[$i]['name']]=$a[$i]['price']; 
    } 
    return $b; 
} 

print_r($b)的輸出將是

Array ([0] => Array ([a] => 25200) [1] => Array ([b] => 13500))