将PHP数组转换为Json对象

时间:2014-09-16 07:56:43

标签: php arrays json object

我有以下问题:

我有一个看起来像这样的php数组:

Array (
 [0] => Array (
    [0] => Array ( [sales_count] => 2 )
    [1] => Array ( [customer_id] => 1 )
 ) 
[1] => Array (
    [0] => Array ( [sales_count] => 3 )
    [1] => Array ( [customer_id] => 2 ) 
 ) 
) 

现在如果我在这个数组上使用json_encode,我得到以下结果:

[[{"sales_count":"2"},{"customer_id":"1"}],[{"sales_count":"3"},{"customer_id":"2"}]] 

但是,我正在尝试获得以下输出:

 [{"sales_count":"2","customer_id":"1"},{"sales_count":"3","customer_id":"2"}]

我怎样才能做到这一点? 我已经阅读了很多类似的问题,我用他们的答案来达到这一点,但是我找不到这个输出的解决方案。

提前多多感谢!

4 个答案:

答案 0 :(得分:4)

这是因为原始数组中的索引0和1

中有两个数组

你需要做这样的事情

$masterArray = Array (
 [0] => Array (
    [0] => Array ( [sales_count] => 2 )
    [1] => Array ( [customer_id] => 1 )
 ) 
[1] => Array (
    [0] => Array ( [sales_count] => 3 )
    [1] => Array ( [customer_id] => 2 ) 
 ) 
);

$json_array = array_merge($masterArray[0], $masterArray[1]);

echo json_encode($json_array);

$masterArray的语法可能错误,但遵循这个概念。

答案 1 :(得分:2)

你阵列上的

应该是:

$data = array(
  array("sales_count" => 2),
  array("customer_id" => 1),
  array("sales_count" => 2),
  array("customer_id" => 1),
 );
json_encode($data);

为了达到预期的产量。

但是如果你的数组是正确的,你可以通过

访问你的json对象
var data = [
   [
    {"sales_count":"2"},
    {"customer_id":"1"}
   ],
    [
     {"sales_count":"3"},
     {"customer_id":"2"}
    ]
 ];

data[0][0].sales_count will access sales_count = 2 on your 1st array.

答案 2 :(得分:2)

好吧,你可以重组它们并把它们放在一个新的里面。例如:

$new_array = array();
array_walk_recursive($array, function($val, $key) use (&$new_array) {
    $new_array[] = array($key => $val);
});

$new_array = json_encode($new_array);
echo '<pre>';
print_r($new_array);
// [{"sales_count":2},{"customer_id":1},{"sales_count":3},{"customer_id":2}]

或者只是一个简单的循环,简单地说,将它们推入内部:

$new_array = array();
foreach($array as $values) {
    foreach($values as $val) {
        $new_array[] = $val;
    }
}

echo json_encode($new_array);

上面的示例输出。

答案 3 :(得分:2)

我来自越南。我的英语不好。所以,我写了这段代码。我希望这对你有帮助。

 $arr = array(
   0 => array(0 => array('sales_count'=>2),1 => array('customer_id' => 1)),
   1 => array(0 => array('sales_count'=>3),1 => array('customer_id' => 2)),
);
$new_arr = array();
foreach($arr as $key => $value){
  foreach($value as $kvalue => $vvalue){
     $new_arr[] = $vvalue;
  }
}
print_r(json_encode($new_arr));