转换php 2D数组

时间:2017-04-15 07:53:24

标签: php arrays multidimensional-array

首先,我正在尝试使用谷歌图表api创建一个饼图。在那里,我必须提供一个javascript数组的数组。现在我在服务器端有一个以下结构的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]]

什么是标准饲养方式?

2 个答案:

答案 0 :(得分: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}]

答案 1 :(得分: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 ) )