php操作数组

$Data1 = [
     [ 'time'=> 1440491658, 'a'=> 1 ] ,
     [ 'time'=> 1440491668, 'a'=> 3 ],
     [ 'time'=> 1440491668, 'b'=> 5 ],
     [ 'time'=> 1440491668, 'c'=> 7 ],
     [ 'time'=> 1440491668, 'd'=> 12 ], 
     [ 'time'=> 1440491678, 'a'=> 11 ],
     [ 'time'=> 1440491678, 'b'=> 88 ],
     [ 'time'=> 1440491678, 'c'=> 13 ],
     [ 'time'=> 1440491678, 'd'=> 100 ],
     [ 'time'=> 1440491688, 'a'=> 11 ],
     [ 'time'=> 1440491688, 'b'=> 69 ],
     [ 'time'=> 1440491688, 'c'=> 12 ],
     [ 'time'=> 1440491688, 'd'=> 73 ],
     ];

 $Data2 = [
     [ 'time'=> 1440491658, 'a'=> 1 ],
     [ 'time'=> 1440491668, 'a'=> 3,'b'=>5,'c'=>7,'d'=>12 ],
     [ 'time'=> 1440491678, 'a'=> 11,'b'=>88,'c'=>13,'d'=>100 ],
     [ 'time'=> 1440491688, 'a'=> 11,'b'=>69,'c'=>12,'d'=>73 ],
     ];
     
    //如何将data1转换成data2的格式??
阅读 3k
4 个回答
foreach ($Data1 as $data) {
    foreach ($data as $key => $value) {
        if($key == 'time') {
            $index = $value;
        }
        $tmp[$index][$key]  = $value;
    }
}

var_dump(array_values($tmp));
<?php
$Data1 = [
     [ 'time'=> 1440491658, 'a'=> 1 ] ,
     [ 'time'=> 1440491668, 'a'=> 3 ],
     [ 'time'=> 1440491668, 'b'=> 5 ],
     [ 'time'=> 1440491668, 'c'=> 7 ],
     [ 'time'=> 1440491668, 'd'=> 12 ], 
     [ 'time'=> 1440491678, 'a'=> 11 ],
     [ 'time'=> 1440491678, 'b'=> 88 ],
     [ 'time'=> 1440491678, 'c'=> 13 ],
     [ 'time'=> 1440491678, 'd'=> 100 ],
     [ 'time'=> 1440491688, 'a'=> 11 ],
     [ 'time'=> 1440491688, 'b'=> 69 ],
     [ 'time'=> 1440491688, 'c'=> 12 ],
     [ 'time'=> 1440491688, 'd'=> 73 ],
     ];

$Data2 = array();
foreach ($Data1 as $value) {
    foreach ($value as $index => $val) {
        $Data2[$value['time']][$index] = $val;
    }
}
var_dump(array_values($Data2));
<?php
$Data2 = [
     [ 'time'=> 1440491658, 'a'=> 1 ],
     [ 'time'=> 1440491668, 'a'=> 3,'b'=>5,'c'=>7,'d'=>12 ],
     [ 'time'=> 1440491678, 'a'=> 11,'b'=>88,'c'=>13,'d'=>100 ],
     [ 'time'=> 1440491688, 'a'=> 11,'b'=>69,'c'=>12,'d'=>73 ],
];
$Data1 = [
     [ 'time'=> 1440491658, 'a'=> 1 ] ,
     [ 'time'=> 1440491668, 'a'=> 3 ],
     [ 'time'=> 1440491668, 'b'=> 5 ],
     [ 'time'=> 1440491668, 'c'=> 7 ],
     [ 'time'=> 1440491668, 'd'=> 12 ], 
     [ 'time'=> 1440491678, 'a'=> 11 ],
     [ 'time'=> 1440491678, 'b'=> 88 ],
     [ 'time'=> 1440491678, 'c'=> 13 ],
     [ 'time'=> 1440491678, 'd'=> 100 ],
     [ 'time'=> 1440491688, 'a'=> 11 ],
     [ 'time'=> 1440491688, 'b'=> 69 ],
     [ 'time'=> 1440491688, 'c'=> 12 ],
     [ 'time'=> 1440491688, 'd'=> 73 ],
];
function a(&$v,$k){
    $k=$v['time'].'t';
    unset($v['time']);
    $v=array($k=>$v);
}
function b(&$v,$k){
    $v=array_merge(array("time"=>intval($k)),$v);
}
array_walk($Data1,a);
$Data1=call_user_func_array(array_merge_recursive,$Data1);
array_walk($Data1,b);
$Data1=array_values($Data1);
print_r($Data1);
?>

Array
(
    [0] => Array
        (
            [time] => 1440491658
            [a] => 1
        )

    [1] => Array
        (
            [time] => 1440491668
            [a] => 3
            [b] => 5
            [c] => 7
            [d] => 12
        )

    [2] => Array
        (
            [time] => 1440491678
            [a] => 11
            [b] => 88
            [c] => 13
            [d] => 100
        )

    [3] => Array
        (
            [time] => 1440491688
            [a] => 11
            [b] => 69
            [c] => 12
            [d] => 73
        )

)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题