PHP根据二维数组的某键值合并二维数组
<pre name="code" class="php">
<?php //需求:根据date字段的值将每天的type的pv、uv的数据放到一个维度里,目标数组仍为二维数组
//原始数组 $resource_array=array ( "0" => Array ( "type" => "hot_list", "date" => "2016-07-18", "pv" => 2, "uv" => 2, ), "1" => Array ( "type" => "trailer_list", "date" => "2016-07-18", "pv" => 3, "uv" => 2, ), "2" => Array ( "type" => "portal", "date" => "2016-07-17", "pv" => 3, "uv" => 2, ), "3" => Array ( "type" => "trailer_list", "date" => "2016-07-17", "pv" => 3, "uv" => 2, ), "4" => Array ( "type" => "main", "date" => "2016-07-16", "pv" => 3, "uv" => 2, ), "5" => Array ( "type" => "play", "date" => "2016-07-16", "pv" => 3, "uv" => 2, ), "6" => Array ( "type" => "portal", "date" => "2016-07-15", "pv" => 3, "uv" => 2, ), "7" => Array ( "type" => "trailer_list", "date" => "2016-07-15", "pv" => 3, "uv" => 2, ) ); //声明变量,存放原始数组的时间值用于比较 $temp_time = ""; $target_array = array(); foreach($resource_array as $v){ //第一次执行或者出现时间相同的元素 if($temp_time == "" || $temp_time == $v["date"]){ if(is_null($target_array[$v["date"]]["date"])){ $target_array[$v["date"]]["date"] = $temp_time; } }else{ //出现不同的日期值需要给目标数组建新的索引值 $target_array[$v["date"]]["date"] = $v["date"]; } $temp_time = $v["date"]; $target_array[$v["date"]][$v["type"]."_pv"] = $v["pv"]; $target_array[$v["date"]][$v["type"]."_uv"] = $v["uv"]; } var_dump($target_array); //需要的结果 $target_array = array( 0=>array( "date"=>"2016-07-18", "trailer_list_pv"=>3, "trailer_list_uv"=>2, "portal_pv"=>3, "portal_uv"=>2, ), 1=>array( "date"=>"2016-07-17", "trailer_list_pv"=>3, "trailer_list_uv"=>2, "portal_pv"=>3, "portal_uv"=>2, ), 2=>array( "date"=>"2016-07-16", "main_pv"=>3, "main_uv"=>2, "play_pv"=>3, "play_uv"=>2, ), 3=>array( "date"=>"2016-07-15", "trailer_list_pv"=>3, "trailer_list_uv"=>2, "portal_pv"=>3, "portal_uv"=>2, ) ) ?>
工作中碰到的问题,方便以后查阅,大神勿喷
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。