版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第PHP实现的操作数组类库定义与用法示例本文实例讲述了PHP实现的操作数组类库定义与用法。分享给大家供大家参考,具体如下:
类库(完整类库):
classArrayHelper{
*从数组中删除空白的元素(包括只有空白字符的元素)
*用法:
*@codephp
*$arr=array('','test','');
*ArrayHelper::removeEmpty($arr);
*dump($arr);
*//输出结果中将只有'test'
*@endcode
*@paramarray$arr要处理的数组
*@paramboolean$trim是否对数组元素调用trim函数
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;
*从一个二维数组中返回指定键的所有值
*用法:
*@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数据源
*@paramstring$col要查询的键
*@returnarray包含指定键所有值的数组
staticfunctiongetCols($arr,$col)
$ret=array();
foreach($arras$row)
if(isset($row[$col])){
$ret[]=$row[$col];
return$ret;
*将一个二维数组转换为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参数,则转换结果每一项为包含该项所有数据的数组。
*用法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数据源
*@paramstring$keyField按照什么键的值进行转换
*@paramstring$valueField对应的键值
*@returnarray转换后的HashMap样式数组
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;
*将一个二维数组按照指定字段的值分组
*用法:
*@endcode
*@paramarray$arr数据源
*@paramstring$keyField作为分组依据的键名
*@returnarray分组后的结果
staticfunctiongroupBy($arr,$keyField)
$ret=array();
foreach($arras$row)
$key=$row[$keyField];
$ret[$key][]=$row;
return$ret;
*将一个平面的二维数组按照指定的字段转换为树状结构
*如果要获得任意节点为根的子树,可以使用$refs参数:
*@codephp
*$refs=null;
*$tree=ArrayHelper::tree($rows,'id','parent','nodes',$refs);
*//输出id为3的节点及其所有子节点
*$id=3;
*dump($refs[$id]);
*@endcode
*@paramarray$arr数据源
*@paramstring$keyNodeId节点ID字段名
*@paramstring$keyParentId节点父ID字段名
*@paramstring$keyChildrens保存子节点的字段名
*@paramboolean$refs是否在返回结果中包含节点引用
*returnarray树形结构的数组
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;
*将树形数组展开为平面的数组
*这个方法是tree()方法的逆向操作。
*@paramarray$tree树形数组
*@paramstring$keyChildrens包含子节点的键名
*@returnarray展开后的数组
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;
*根据指定的键对数组排序
*@endcode
*@paramarray$array要排序的数组
*@paramstring$keyname排序的键
*@paramint$dir排序方向
*@returnarray排序后的数组
staticfunctionsortByCol($array,$keyname,$dir=SORT_ASC)
returnself::sortByMultiCols($array,array($keyname=$dir));
*将一个二维数组按照多个列进行排序,类似SQL语句中的ORDERBY
*用法:
*@codephp
*$rows=ArrayHelper::sortByMultiCols($rows,array(
*'parent'=SORT_ASC,
*'name'=SORT_DESC,
*));
*@endcode
*@paramarray$rowset要排序的数组
*@paramarray$args排序的键
*@returnarray排序后的数组
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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届迪庆市重点中学中考猜题物理试卷含解析
- 2026届四川省蓬安县重点达标名校中考物理全真模拟试题含解析
- 做账实操-学校的成本核算
- 2026年贵州省安顺市重点达标名校中考物理押题卷含解析
- 2026年山东省济南市历下区中考物理最后冲刺模拟试卷含解析
- 中职护理护理职业素养培养课件
- 中风急性期护理概述
- 招标管理制度
- 2026春苏科版三年级下册信息技术期末练习卷及答案
- 【泉州提线木偶戏本土市场深化路径研究16000字(论文)】
- 2026年全国保密教育线上培训考试试题及完整附答案
- 初三道德与法治中考复习:开放性设问之倡议书、标语与活动方案专项突破教案
- 2025年合肥高新区社区工作者招聘考试试卷真题
- 中国胃肠间质瘤诊疗指南(2025版)
- 北京市石景山区2026年5月初三综合练习(二模)语文试卷(含答案)
- 2026福建漳州水仙药业股份有限公司招聘14人考试备考题库及答案解析
- 2026河南开封工程职业学院招聘57人笔试备考试题及答案解析
- 2026年安徽省检察机关招聘书记员考试真题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 2026年高考(湖南卷)化学试题及答案
评论
0/150
提交评论