繁体   English   中英

如何在PHP中转换多维数组?

[英]How to transform a multidimensional array in PHP?

我在php中得到以下数组,

[
 {
   Name0: "TEST",
   Value0: "13",
   Timestamp0: "2012-01-02 00:00:13"
 },
{
   Name0: "TEST",
   Value0: "16",
   Timestamp0: "2012-01-02 00:10:45"
 }
],
[
 {
   Name1: "TEST",
   Value1: "30",
   Timestamp1: "2012-01-02 00:00:13"
 },
{
   Name1: "TEST",
   Value1: "60",
   Timestamp1: "2012-01-02 00:10:45"
 }
]

进一步,我希望它如下

[
 {
   Name0: "TEST",
   Value0: "13",
   Timestamp0: "2012-01-02 00:00:13",
   Name1: "TEST",
   Value1: "30",
   Timestamp1: "2012-01-02 00:00:13"
 },
{
   Name0: "TEST",
   Value0: "16",
   Timestamp0: "2012-01-02 00:10:45",
   Name1: "TEST",
   Value1: "60",
   Timestamp1: "2012-01-02 00:10:45"
 }
]

那确实使array_merge和其他一些东西使我的大脑崩溃;-)希望有人可以在这里帮助我吗?

您可以简单地遍历$array[0]的长度:

<?php
    for ($i = 0; $i < count($array[0]); $i++) {
        $array[0][$i] = array_merge($array[0][$i], $array[1][$i]);
    }
    $array = $array[0];
?>

试试看:

<?php

    $arr1 = array(array('name0' => 'foo', 'val0' => '10'), 
            array('name0' => 'cde', 'val0' => '11'));
    $arr2 = array(array('name1' => 'bar', 'val1' => '20'), 
            array('name1' => 'fgh', 'val0' => '21'));

    $arr_mrg = array();

    for($i=0; $i<count($arr1); $i++){
         $arr_mrg[$i] = array_merge($arr1[$i], $arr2[$i]);
    }

    var_dump($arr_mrg); //test output of the result

?>

更一般的方法。

$loop_length = count($array[0]);
$new_array = array();
for($i=0; $i<$loop_length; $i++){
    for($j=0; $j<count($array); $j++){
        if(!array_key_exists($j,$new_array)) $new_array[$j] = array();
        $new_array[$j] = array_merge($new_array[$j],$array[$i][$j]);
    }
}

var_dump($new_array);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM