1. 程式人生 > >PHP根據二維陣列的某鍵值合併二維陣列

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

)

?> 

工作中碰到的問題,方便以後查閱,大神勿噴

相關推薦

PHP根據陣列合併陣列

<pre name="code" class="php"> <?php //需求:根據date欄位的值將每天的type的pv、uv的資料放到一個維度裡,目標陣列仍為二維陣列 //原始陣列 $resource_array=array ( '0' =

PHP通過陣列獲取一

有如下既定陣列: $inviteType = [ '掃碼' => [ 'type' => 0, 'point' => 5, ],

C/C++陣列陣列指標)——陣列的傳陣列的一訪問

二維陣列既可以通過二維訪問也可以通過一維訪問。 對於二維陣列的傳值,引進了陣列指標。 #include <stdio.h> void foo(int *p,int n)//一維訪問 {

指標的賦、一陣列的賦陣列與指標

1、指標的賦值 int a; int *p; p = &a; 或者 int a; int *p = &a; 2、一維陣列的賦值 int *p,a[i]; p=a;//陣列的首地址傳給了指標變數,則該指標變數指向了該陣列。 或者

Python 建立與插入種方法

1第一種 nums = [] rows = eval(input("請輸入行數:")) columns = eval(input("請輸入列數:")) for row in range(rows): nums.append([]) for column in range(co

(三)JavaScript的陣列對和原型

一、Array物件 Array既被當作陣列,又被當作鍵值對和list集合,最外層為“[ ]”(中括號)即為數字,為“{ }”(大括號)即為鍵值對,又稱作json格式。 <script

JavaScript中用陣列實現

  今天寫瀏覽器端js程式,需要用到鍵值對的功能,vbs中有dictionary物件,js中也應該有對應的dictionary物件,查了一下js手冊,js中果然有dictionary物件,程式寫好了,跨瀏覽器一測試,發現只有IE支援new ActiveXObject("Scripting.Dictiona

資料預處理系列:(十)用截斷奇異分解降

博主簡介:風雪夜歸子(英文名: Allen),機器學習演算法攻城獅,喜愛鑽研Machine Learning的黑科技,對Deep Learning和Artificial Intellige

php 中 使用foreach為陣列增加

php 中的 foreach 在php中,使用foreach來遍歷陣列的頻率很高,並且其效能要高於 list() 和 each() 結合來遍歷陣列: 當遍歷二位陣列的第一層陣列,並要給第二位陣列增加一個新的鍵值對時。例如我有這樣的二維陣列結構 $a =

給定兩個有序陣列,找出合併之後的陣列中位數

中位數定義:假如一個數組的長度Len為偶數,那麼中位數為第 Len/2 個數;如果Len為奇數,那麼中位數為第Len/2+1個數。 比如 Arr[ 1, 2, 3, 4, 5]中位數為3;Arr[ 2, 3, 4, 5]中位數為3。 給定兩個遞增排序陣列,請設計一種高效演算

php陣列根據一個,把相同合併生成一個新的陣列

php陣列根據某一個鍵值,把相同鍵值的合併生成一個新的二維陣列 <?php $infos = array( array( 'a' => 36, 'b' => 'xa', 'c' => '2015-08-28 00:00:00', 'd' => '2

陣列根據指定的排序

function array_sort($array,$keys,$type='asc'){ if(!isset($array) || !is_array($array) || empty($array)){ return ''; } if(!isse

merger_by_one 處理陣列,根據裡面欄位合併, 裡面有的保留,有的求和~~

public function tt(){ $param = array( array ( 'hykno' => '2222222-CB', 'tcdk_f

poj 2155 (樹狀陣列 區間修改 求)

Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 33682  

php陣列按某個排序(突然用到以往知識,算是臨時補充筆記吧)

print_r($arr);排序後Array ( [0] => Array ( [name] => 6 [age] => 21 ) [1] => Array (

php 陣列分組 陣列中,將某個相同的合併到一個數組中

php 陣列分組  二維陣列中,將某個鍵值相同的合併到一個數組中,下面是示例程式碼。 //原陣列 $arr    =   array (     0 => array         (             'initial' => 'A',      

php陣列刪除某個相同的陣列

<?php $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ),

php陣列按某個排序

function arrSort($arr,$field,$sort='asc'){$newArr = $sortArr = [];foreach($arr as $key=>$value){$newArr[$key] = $value[$field];}if($sor

PHP陣列去重的方法(保留各個的同時去除重複的項)-- 陣列的唯一性

對於如下二維陣列,要求對其進行去重: $arr = array( '0'=>array( 'name'=>'james', 'age'=>30,

php陣列去重即去掉重複的子元素

案例1: Array (     [0] => Array         (             [0] => 2             [1] => 1505622764         )     [1] => Array