版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第PHP實現(xiàn)的操作數(shù)組類庫定義與用法示例本文實例講述了PHP實現(xiàn)的操作數(shù)組類庫定義與用法。分享給大家供大家參考,具體如下:
類庫(完整類庫):
classArrayHelper{
*從數(shù)組中刪除空白的元素(包括只有空白字符的元素)
*用法:
*@codephp
*$arr=array('','test','');
*ArrayHelper::removeEmpty($arr);
*dump($arr);
*//輸出結(jié)果中將只有'test'
*@endcode
*@paramarray$arr要處理的數(shù)組
*@paramboolean$trim是否對數(shù)組元素調(diào)用trim函數(shù)
staticfunctionremoveEmpty($arr,$trim=TRUE)
foreach($arras$key=$value)
if(is_array($value))
self::removeEmpty($arr[$key]);
else
$value=trim($value);
if($value=='')
unset($arr[$key]);
elseif($trim)
$arr[$key]=$value;
*從一個二維數(shù)組中返回指定鍵的所有值
*用法:
*@codephp
*$rows=array(
*array('id'=1,'value'='1-1'),
*array('id'=2,'value'='2-1'),
*);
*$values=ArrayHelper::getCols($rows,'value');
*dump($values);
*//輸出結(jié)果為
*//array(
*//'1-1',
*//'2-1',
*//)
*@endcode
*@paramarray$arr數(shù)據(jù)源
*@paramstring$col要查詢的鍵
*@returnarray包含指定鍵所有值的數(shù)組
staticfunctiongetCols($arr,$col)
$ret=array();
foreach($arras$row)
if(isset($row[$col])){
$ret[]=$row[$col];
return$ret;
*將一個二維數(shù)組轉(zhuǎn)換為HashMap,并返回結(jié)果
*用法1:
*@codephp
*$rows=array(
*array('id'=1,'value'='1-1'),
*array('id'=2,'value'='2-1'),
*);
*$hashmap=ArrayHelper::toHashmap($rows,'id','value');
*dump($hashmap);
*//輸出結(jié)果為
*//array(
*//1='1-1',
*//2='2-1',
*//)
*@endcode
*如果省略$valueField參數(shù),則轉(zhuǎn)換結(jié)果每一項為包含該項所有數(shù)據(jù)的數(shù)組。
*用法2:
*@codephp
*$rows=array(
*array('id'=1,'value'='1-1'),
*array('id'=2,'value'='2-1'),
*);
*$hashmap=ArrayHelper::toHashmap($rows,'id');
*dump($hashmap);
*//輸出結(jié)果為
*//array(
*//1=array('id'=1,'value'='1-1'),
*//2=array('id'=2,'value'='2-1'),
*//)
*@endcode
*@paramarray$arr數(shù)據(jù)源
*@paramstring$keyField按照什么鍵的值進(jìn)行轉(zhuǎn)換
*@paramstring$valueField對應(yīng)的鍵值
*@returnarray轉(zhuǎn)換后的HashMap樣式數(shù)組
staticfunctiontoHashmap($arr,$keyField,$valueField=NULL)
$ret=array();
if($valueField)
foreach($arras$row)
$ret[$row[$keyField]]=$row[$valueField];
else
foreach($arras$row)
$ret[$row[$keyField]]=$row;
return$ret;
*將一個二維數(shù)組按照指定字段的值分組
*用法:
*@endcode
*@paramarray$arr數(shù)據(jù)源
*@paramstring$keyField作為分組依據(jù)的鍵名
*@returnarray分組后的結(jié)果
staticfunctiongroupBy($arr,$keyField)
$ret=array();
foreach($arras$row)
$key=$row[$keyField];
$ret[$key][]=$row;
return$ret;
*將一個平面的二維數(shù)組按照指定的字段轉(zhuǎn)換為樹狀結(jié)構(gòu)
*如果要獲得任意節(jié)點為根的子樹,可以使用$refs參數(shù):
*@codephp
*$refs=null;
*$tree=ArrayHelper::tree($rows,'id','parent','nodes',$refs);
*//輸出id為3的節(jié)點及其所有子節(jié)點
*$id=3;
*dump($refs[$id]);
*@endcode
*@paramarray$arr數(shù)據(jù)源
*@paramstring$keyNodeId節(jié)點ID字段名
*@paramstring$keyParentId節(jié)點父ID字段名
*@paramstring$keyChildrens保存子節(jié)點的字段名
*@paramboolean$refs是否在返回結(jié)果中包含節(jié)點引用
*returnarray樹形結(jié)構(gòu)的數(shù)組
staticfunctiontoTree($arr,$keyNodeId,$keyParentId='parent_id',$keyChildrens='childrens',$refs=NULL)
$refs=array();
foreach($arras$offset=$row)
$arr[$offset][$keyChildrens]=array();
$refs[$row[$keyNodeId]]=$arr[$offset];
$tree=array();
foreach($arras$offset=$row)
$parentId=$row[$keyParentId];
if($parentId)
if(!isset($refs[$parentId]))
$tree[]=$arr[$offset];
continue;
$parent=$refs[$parentId];
$parent[$keyChildrens][]=$arr[$offset];
else
$tree[]=$arr[$offset];
return$tree;
*將樹形數(shù)組展開為平面的數(shù)組
*這個方法是tree()方法的逆向操作。
*@paramarray$tree樹形數(shù)組
*@paramstring$keyChildrens包含子節(jié)點的鍵名
*@returnarray展開后的數(shù)組
staticfunctiontreeToArray($tree,$keyChildrens='childrens')
$ret=array();
if(isset($tree[$keyChildrens])is_array($tree[$keyChildrens]))
foreach($tree[$keyChildrens]as$child)
$ret=array_merge($ret,self::treeToArray($child,$keyChildrens));
unset($node[$keyChildrens]);
$ret[]=$tree;
else
$ret[]=$tree;
return$ret;
*根據(jù)指定的鍵對數(shù)組排序
*@endcode
*@paramarray$array要排序的數(shù)組
*@paramstring$keyname排序的鍵
*@paramint$dir排序方向
*@returnarray排序后的數(shù)組
staticfunctionsortByCol($array,$keyname,$dir=SORT_ASC)
returnself::sortByMultiCols($array,array($keyname=$dir));
*將一個二維數(shù)組按照多個列進(jìn)行排序,類似SQL語句中的ORDERBY
*用法:
*@codephp
*$rows=ArrayHelper::sortByMultiCols($rows,array(
*'parent'=SORT_ASC,
*'name'=SORT_DESC,
*));
*@endcode
*@paramarray$rowset要排序的數(shù)組
*@paramarray$args排序的鍵
*@returnarray排序后的數(shù)組
staticfunctionsortByMultiCols($rowset,$args)
$sortArray=array();
$sortRule='';
foreach($argsas$sortField=$sortDir)
foreach($rowsetas$offset=$row)
$sortArr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026浙江嘉興市海寧市馬橋派出所招聘馬橋街道流動人口協(xié)管員3人筆試備考試題及答案解析
- 2026江蘇南通市啟東市教育體育系統(tǒng)招聘編外聘用人員2人筆試備考試題及答案解析
- 人事部培訓(xùn)規(guī)章制度
- 培訓(xùn)體系考核制度
- 救生員定期培訓(xùn)管理制度
- 農(nóng)家樂人員培訓(xùn)制度
- 健全培訓(xùn)臺賬制度
- 缺少培訓(xùn)評估制度
- 培訓(xùn)學(xué)校藝考生管理制度
- 培訓(xùn)各部門規(guī)章制度
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 2026長治日報社工作人員招聘勞務(wù)派遣人員5人備考題庫及答案1套
- 機動車駕校安全培訓(xùn)課件
- 河道清淤作業(yè)安全組織施工方案
- 2025年役前訓(xùn)練考試題庫及答案
- 2026年七臺河職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 2021海灣消防 GST-LD-8318 緊急啟停按鈕使用說明書
- 煙花爆竹零售經(jīng)營安全責(zé)任制度
- 2023年和田地區(qū)直遴選考試真題匯編含答案解析(奪冠)
- ICG熒光導(dǎo)航在肝癌腹腔鏡解剖性肝切除中的應(yīng)用2026
- 城市軌道交通服務(wù)與管理崗位面試技巧
評論
0/150
提交評論