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,
)
)
?> 工作中碰到的问题,方便以后查阅,大神勿喷
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
