php根據(jù)分類合并數(shù)組的方法實(shí)例詳解
更新時間:2013年11月06日 10:45:32 作者:
在php中如果是簡單的數(shù)組合并有很多的方法,但是我今天要求是根據(jù)數(shù)組ID然后重新合并數(shù)組,是要根據(jù)分類來操作
最簡單的數(shù)組合并我們只要使用array_merge即可
array_merge()將兩個或多個數(shù)組的單元合并起來,一個數(shù)組中的值附加在前一個數(shù)組的后面。返回作為結(jié)果的數(shù)組。
數(shù)組鍵名為數(shù)字鍵名時,要合并的兩個數(shù)組中有同名數(shù)字KEY的時候,使用array_merge()不會覆蓋掉原來的值,而使用“+”合并數(shù)組則會把最先出現(xiàn)的值作為最終結(jié)果返回,而把后面的數(shù)組擁有相同鍵名的那些值“拋棄”掉(注意:不是覆蓋而是保留最先出現(xiàn)的那個值)。例子:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*結(jié)果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結(jié)果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結(jié)果為$array2和$array1的值,鍵名被重新分配*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結(jié)果為$array1和$array2的值,鍵名被重新分配*/
print_r($result4);
輸出結(jié)果為:
Array ( [1] => data )
Array ( [1] => 0 )
Array (
[0] => data
[1] => 0
)
Array
(
[0] => 0
[1] => data
)
2.當(dāng)相同數(shù)組鍵名為字符時,“+”運(yùn)算符與鍵名為數(shù)字時一樣,但array_merge()此時會覆蓋掉前面相同鍵名的值。
例子:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*結(jié)果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結(jié)果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結(jié)果為$array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結(jié)果為$array2*/
print_r($result4);
輸出結(jié)果為:
Array ( [asd] => data )
Array ( [asd] => 0 )
Array ( [asd] => 0 )
Array ( [asd] => data )
講了這么多費(fèi)話,下面才是我要給各位朋友介紹的
根據(jù)分類字段進(jìn)行數(shù)組重組
<?php
//需要重組的數(shù)組
$arrar=array();
$array[]=array('ItemID' => 110126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 120126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 130126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 140126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 150126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 160126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 170126866896,'CategoryID'=>117);
$array[]=array('ItemID' => 118126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 121126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 132126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 143126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 154126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 165126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 176126866896,'CategoryID'=>117);
//數(shù)組根據(jù)分類進(jìn)行重組
$newArray=array();
foreach($array as $val){
$newArray[$val['CategoryID']][]=$val;
}
//刪除原始數(shù)組釋放空間
$array=null;
unset($array);
print_r($newArray);
?>
array_merge()將兩個或多個數(shù)組的單元合并起來,一個數(shù)組中的值附加在前一個數(shù)組的后面。返回作為結(jié)果的數(shù)組。
數(shù)組鍵名為數(shù)字鍵名時,要合并的兩個數(shù)組中有同名數(shù)字KEY的時候,使用array_merge()不會覆蓋掉原來的值,而使用“+”合并數(shù)組則會把最先出現(xiàn)的值作為最終結(jié)果返回,而把后面的數(shù)組擁有相同鍵名的那些值“拋棄”掉(注意:不是覆蓋而是保留最先出現(xiàn)的那個值)。例子:
復(fù)制代碼 代碼如下:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*結(jié)果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結(jié)果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結(jié)果為$array2和$array1的值,鍵名被重新分配*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結(jié)果為$array1和$array2的值,鍵名被重新分配*/
print_r($result4);
輸出結(jié)果為:
Array ( [1] => data )
Array ( [1] => 0 )
Array (
[0] => data
[1] => 0
)
Array
(
[0] => 0
[1] => data
)
2.當(dāng)相同數(shù)組鍵名為字符時,“+”運(yùn)算符與鍵名為數(shù)字時一樣,但array_merge()此時會覆蓋掉前面相同鍵名的值。
例子:
復(fù)制代碼 代碼如下:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*結(jié)果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結(jié)果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結(jié)果為$array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結(jié)果為$array2*/
print_r($result4);
輸出結(jié)果為:
Array ( [asd] => data )
Array ( [asd] => 0 )
Array ( [asd] => 0 )
Array ( [asd] => data )
講了這么多費(fèi)話,下面才是我要給各位朋友介紹的
根據(jù)分類字段進(jìn)行數(shù)組重組
復(fù)制代碼 代碼如下:
<?php
//需要重組的數(shù)組
$arrar=array();
$array[]=array('ItemID' => 110126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 120126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 130126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 140126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 150126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 160126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 170126866896,'CategoryID'=>117);
$array[]=array('ItemID' => 118126866896,'CategoryID'=>111);
$array[]=array('ItemID' => 121126866896,'CategoryID'=>112);
$array[]=array('ItemID' => 132126866896,'CategoryID'=>113);
$array[]=array('ItemID' => 143126866896,'CategoryID'=>114);
$array[]=array('ItemID' => 154126866896,'CategoryID'=>115);
$array[]=array('ItemID' => 165126866896,'CategoryID'=>116);
$array[]=array('ItemID' => 176126866896,'CategoryID'=>117);
//數(shù)組根據(jù)分類進(jìn)行重組
$newArray=array();
foreach($array as $val){
$newArray[$val['CategoryID']][]=$val;
}
//刪除原始數(shù)組釋放空間
$array=null;
unset($array);
print_r($newArray);
?>
相關(guān)文章
php處理靜態(tài)頁面:頁面設(shè)置緩存時間實(shí)例
本篇文章主要介紹了php處理靜態(tài)頁面:頁面設(shè)置緩存時間實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06推薦幾款用 Sublime Text 開發(fā) Laravel 所用到的插件
Sublime Text2 是一款具有代碼高亮、語法提示、自動完成且反應(yīng)快速的編輯器軟件,不僅具有華麗的界面,還支持插件擴(kuò)展機(jī)制,用她來寫代碼,絕對是一種享受。所以本人也是用她來做Laravel開發(fā)的,這里給大家推薦幾款她的插件2014-10-10PHP開發(fā)框架kohana3 自定義路由設(shè)置示例
這篇文章主要介紹了PHP開發(fā)框架kohana3 自定義路由設(shè)置示例,kohana是一個純PHP5的開發(fā)框架,需要的朋友可以參考下2014-07-07PHP實(shí)現(xiàn)用戶認(rèn)證及管理完全源碼
PHP實(shí)現(xiàn)用戶認(rèn)證及管理完全源碼...2007-03-03PHP 中TP5 Request 請求對象的實(shí)例詳解
這篇文章主要介紹了PHP 中TP5 Request 請求對象的實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)代碼幫助大家理解這部分內(nèi)容,需要的朋友可以參考下2017-07-07