PHP实现的操作数组类库定义与用法示例_第1页
PHP实现的操作数组类库定义与用法示例_第2页
PHP实现的操作数组类库定义与用法示例_第3页
PHP实现的操作数组类库定义与用法示例_第4页
PHP实现的操作数组类库定义与用法示例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论