牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP根据二维数组的某键值合并二维数组

创建时间:2016-07-20 投稿人: 浏览次数:152
<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,
	)

)

?> 

工作中碰到的问题,方便以后查阅,大神勿喷


            
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。