




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第PHP實現(xiàn)的操作數(shù)組類庫定義與用法示例本文實例講述了PHP實現(xiàn)的操作數(shù)組類庫定義與用法。分享給大家供大家參考,具體如下:
類庫(完整類庫):
classArrayHelper{
*從數(shù)組中刪除空白的元素(包括只有空白字符的元素)
*用法:
*@codephp
*$arr=array('','test','');
*ArrayHelper::removeEmpty($arr);
*dump($arr);
*//輸出結果中將只有'test'
*@endcode
*@paramarray$arr要處理的數(shù)組
*@paramboolean$trim是否對數(shù)組元素調用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);
*//輸出結果為
*//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ù)組轉換為HashMap,并返回結果
*用法1:
*@codephp
*$rows=array(
*array('id'=1,'value'='1-1'),
*array('id'=2,'value'='2-1'),
*);
*$hashmap=ArrayHelper::toHashmap($rows,'id','value');
*dump($hashmap);
*//輸出結果為
*//array(
*//1='1-1',
*//2='2-1',
*//)
*@endcode
*如果省略$valueField參數(shù),則轉換結果每一項為包含該項所有數(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);
*//輸出結果為
*//array(
*//1=array('id'=1,'value'='1-1'),
*//2=array('id'=2,'value'='2-1'),
*//)
*@endcode
*@paramarray$arr數(shù)據(jù)源
*@paramstring$keyField按照什么鍵的值進行轉換
*@paramstring$valueField對應的鍵值
*@returnarray轉換后的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分組后的結果
staticfunctiongroupBy($arr,$keyField)
$ret=array();
foreach($arras$row)
$key=$row[$keyField];
$ret[$key][]=$row;
return$ret;
*將一個平面的二維數(shù)組按照指定的字段轉換為樹狀結構
*如果要獲得任意節(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é)點引用
*returnarray樹形結構的數(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ù)組按照多個列進行排序,類似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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢字真有趣課件照片
- 《Photoshop CC平面廣告設計》高職全套教學課件
- Unit6 Plan for Yourself單元測試(無答案)人教版(2024)八年級英語上冊
- 漢字多的課件
- 新能源汽車充電基礎設施建設規(guī)
- 高端家電市場品牌競爭策略研究
- 漢子家園言課件
- 水邊玩耍的安全教育
- 消防設施功能測試方案
- 建筑工程施工階段安全監(jiān)控方案
- 2025年體育教練員執(zhí)業(yè)能力考試試題及答案解析
- 2025年住培結業(yè)考試題庫及答案
- 2025年重慶輔警管理知識模擬100題及答案
- 創(chuàng)傷急救基本知識培訓課件
- DB42∕T 2151-2023 應急物資儲備庫建設規(guī)范
- 2025年二級建造師繼續(xù)教育題庫及參考答案(完整版)
- 膠水儲存管理辦法
- 精神患者家屬健康教育講座
- 分包招采培訓課件
- 公司全員銷售管理辦法
- 考試真題及答案解析注冊安全工程師
評論
0/150
提交評論