为了账号安全,请及时绑定邮箱和手机立即绑定

php操作数组

php操作数组

PHP
扬帆大鱼 2019-03-18 18:10:44
$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的格式??
查看完整描述

4 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

foreach ($Data1 as $data) {
    foreach ($data as $key => $value) {
        if($key == 'time') {
            $index = $value;
        }
        $tmp[$index][$key]  = $value;
    }
}

var_dump(array_values($tmp));
查看完整回答
反对 回复 2019-03-18
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

<?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));
查看完整回答
反对 回复 2019-03-18
?
动漫人物

TA贡献1815条经验 获得超10个赞

<?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
        )

)
查看完整回答
反对 回复 2019-03-18
?
哔哔one

TA贡献1854条经验 获得超8个赞

$result = [];
$index = 0;
$now_time = null;
$temp = [];
foreach ($Data1 as $value){
    foreach ($value as $k => $v){
        //echo $k."->".$v;
        if($k=='time' && $now_time==null){
            //echo " {1} ".$now_time."<br>";
            $now_time = $v;
            $temp[$k] = $v;
        }else if($k=='time' && $v==$now_time){
            //echo " {2} ".$now_time."<br>";
            $temp[$k] = $v;
        }else if($now_time!=null && $k!='time'){
            //echo " {3} ".$now_time."<br>";
            $temp[$k] = $v;
        }else{
            //echo " {4} ".$now_time."<br>";
            $now_time = $v;
            $temp[$k] = $v;
            $result[$index] = $temp;
            $index++;
            $temp = [];
        }
    }

}
var_dump($result);

运行后结果如下:


array(3) {
  [0]=>
  array(2) {
    ["time"]=>
    int(1440491668)
    ["a"]=>
    int(1)
  }
  [1]=>
  array(5) {
    ["a"]=>
    int(3)
    ["time"]=>
    int(1440491678)
    ["b"]=>
    int(5)
    ["c"]=>
    int(7)
    ["d"]=>
    int(12)
  }
  [2]=>
  array(5) {
    ["a"]=>
    int(11)
    ["time"]=>
    int(1440491688)
    ["b"]=>
    int(88)
    ["c"]=>
    int(13)
    ["d"]=>
    int(100)
  }
}
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 409 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信