[提交手册]Array类使用说明首先有一点我们要知道在FLEA_Helper_Array中并不存在一个类。这也就是说,当我们载入FLEA_Helper_Array文件后,我们就可以直接使用里面的函数,无需声明什么实例之类的。
我们要使用FLEA_Helper_Array,第一步就载入它。但是,就像我前面说的那样,因为文件中并存在一个FLEA_Helper_Array类,所以我们不能使用FLEA::loadClass()载入,应该使用FLEA::loadFile(“FLEA_Helper_Array”)来载入文件。
因为FLEA_Helper_Array中的每一个函数都是独立的,所以我在这里就向大家一个一个的介绍。
array_remove_empty
/**
* 从数组中删除空白的元素(包括只有空白字符的元素)
*/
函数原型:array_remove_empty(& $arr, $trim = true)
参数说明:
$arr 要被处理的数组
$trim 是否去掉非空白元素的2边的空格。
这里有一点,请大家注意。因为这个的一个参数是对原数组的引用,所以会影响到原数组。因为是引用所以不会有返回值。
实例说明:
$testOne = array(
'empty' => '',
'empty1' => ' ',
'empty2' => 'yy',
'empty3' => ' yy ',
'empty4' => ' y y ',
);
为了更好的看到效果,我使用了这样的一个数组。
在没有进行经过array_remove_empty函数处理之前,我们来看一下这个数组在浏览器中的效果。
dump($testOne);
浏览器中效果图:
before1.jpg (14.98 KB)
2007-4-13 13:34
接下来,我们用使用array_remove_empty函数对这个数组进行处理。
array_remove_empty($testOne,false); //
(1)
dump($testOne);
我们再来看看浏览器中的效果图。
d1.jpg (10.66 KB)
2007-4-13 13:34
在进行比较处理
array_remove_empty($testOne,true); //(2)
dump($testOne);
浏览器中的效果图:
d2.jpg (10.66 KB)
2007-4-13 13:34
我们可以看到,数组在经过(1)处理之后,去除empty和empty1这2个空白元素。经过在(2)处理,则去除了empty3和empty4的前后空格。
大家请注意(1)和(2)得区别在于对于参数$trim的设置。当设置为true时即表示去除非空白元素的2边的空格。
还有在这里给出empty4元素也是告诉大家,当$trim设置为true时,也只是处理掉2边的空格,字符中的空格则不处理。
array_col_values
/**
* 从一个二维数组中返回指定键的所有值
* @return array
*/
函数原型:array_col_values(& $arr, $col)
参数说明:
$arr 要使用的数组,
这个数组一定要是二维,一维和多维的数组返回的结果,并非如想象的那样。
$col 指定的键值,只能是字符串。
实例说明:
$testTow = array(
0 =>array(
'key'=> 'key value'
),
1 =>array(
'key'=> 'key another value',
'key1'=> 'key1 value'
),
);
使用array_col_values函数,如下:
$key = array_col_values($testTow,'key');
dump($key);
在浏览器中的显示结果如下:
key.jpg (9.05 KB)
2007-4-13 13:43
为了节省文章的篇幅,大家可以自己测试一下key1 。
array_to_hashmap
/**
* 将一个二维数组转换为 hashmap
* 如果省略 $valueField 参数,则转换结果每一项为包含该项所有数据的数组。*
* @return array
*/
函数原型:array_to_hashmap(& $arr, $keyField, $valueField = null)
参数说明:
$arr 要被处理的数组
$keyField 要被处理的键值
$valueField 被赋予的新值的键值,这个不太好说明,大家看实例吧。
返回一个新的数组。
$testThree = array(
'key' => array(
'x' => 'x value',
'y' => 'y value',
),
'key1' => array(
'x' => 'x another value',
'y' => 'y another value'
)
);
$x = array_to_hashmap($testThree,'x','y');
dump($x);
浏览器中的结果:
hashmap.jpg (13.09 KB)
2007-4-13 13:41
看到运行结果,我想大家都明白了吧。 ^_^
array_group_by
/**
* 将一个二维数组按照指定字段的值分组
* @return array
*/
函数原型:array_group_by(& $arr, $keyField)
参数说明:
$arr 要被分组的数组
$keyField 进行分组的键值
返回一个新的数组
为了能让大家了解这么的一个有用的函数,我特别准备的好理解的例子。
$testFour = array(
'key' =>array(
'name' => 'Jim',
'age' => 20,
'fax' => 'none'
),
'key1' =>array(
'name' => 'tim',
'age' => 30,
'fax' => 123456
)
);
$byName = array_group_by($testFour,'name');
dump($byName);
浏览器中的结果图:
byName.jpg (29.21 KB)
2007-4-13 13:41
我想通过例子,大家应该很了解这个函数的用法了吧。一个很有用的函数。
array_to_tree
/**
* 将一个平面的二维数组按照指定的字段转换为树状结构
*
* 当 $returnReferences 参数为 true 时,返回结果的 tree 字段为树,refs 字段则为节点引用。
* 利用返回的节点引用,可以很方便的获取包含以任意节点为根的子树。
*/
函数原型:array_to_tree($arr, $fid, $fparent = 'parent_id',
$fchildrens = 'childrens', $returnReferences = false)
参数说明:
$arr 要被转换的数组
$fid 子元素的键值
$fparent 父元素的键值
$fchildrens 保存子节点的键值
$returnReferences 是否返回节点数组
返回值是数组。
老大这个函数写的牛B,我看了好久才能明白。真不知道老大的脑袋是怎么长,牛。里面用了n多的引用。
实例说明:
$testFive = array(
'key' =>array(
'parent'=>'',
'value' =>'newsList',
'sun' =>'news'
),
'key1' =>array(
'parent'=>'newsList',
'value' =>'news',
'sun' =>'title,write,date'
),
'key2' =>array(
'parent'=>'news',
'value' =>'title',
'sun' =>''
),
'key3' =>array(
'parent'=>'news',
'value' =>'date',
'sun' =>''
),
'key4' =>array(
'parent'=>'news',
'value' =>'write',
'sun' =>''
)
);
//dump($testFive);
$treeValue = array_to_tree($testFive,'sun','parent','children',true);
dump($treeValue);
浏览器中的效果图:
tree1.jpg (48.87 KB)
2007-4-13 13:41
tree2.jpg (52.62 KB)
2007-4-13 13:41
tree3.jpg (24.6 KB)
2007-4-13 13:41
这个看效果就是这样的简单,用起来也简单。但是,廖大写的函数确是很牛B。
tree_to_array
/**
* 将树转换为平面的数组
* @return array
*/
函数原型:tree_to_array(& $node, $fchildrens = 'childrens')
参数说明:
$node 要被转换得树数组
$fchildrens 设置子节点的键值
实例说明:
$testSix = array(
'parent'=> '',
'value' => 'newsList',
'sun' => 'news',
'children' => array(
0 => array(
'parent' => 'news',
'value' => 'title',
'sun' => ''
),
1 => array(
'parent' => 'news',
'value' => 'date',
'sun' => ''
),
2 => array(
'parent' => 'news',
'value' => 'write',
'sun' => ''
)
)
);
$treeArray = tree_to_array($testSix,'children');
dump($treeArray);
浏览器中的效果图:
node.jpg (42.1 KB)
2007-4-13 13:41
array_column_sort
/**
* 根据指定的键值对数组排序
*
* @param array $array 要排序的数组
* @param string $keyname 键值名称
* @param int $sortDirection 排序方向
* @return array
*/
函数原型:array_column_sort($array, $keyname, $sortDirection = SORT_ASC)
array_sortby_multifields($rowset, $args)
/**
* 将一个二维数组按照指定列进行排序,类似 SQL 语句中的 ORDER BY
*
* @param array $rowset
* @param array $args
*/
接下来,要把这2个函数一些来讲。因为array_column_sort是对函数array_sortby_multifields的调用。
特别说明:这2个函数都涉及到了,排序的方向,但是具体的排序标志是什么。请大家参照php手册的array_multisort。
实例说明:
$testEight = array(
'key' =>array(
'id' =>1,
'value' =>'This is first id'
),
'key1' =>array(
'id' =>3,
'value' =>'This is second'
),
'key2' =>array(
'id' =>2,
'value' =>'This is a third'
),
'key3' =>array(
'id' =>0,
'value' =>'This is a fouth'
)
);
在浏览器中的效果图:
sort1.jpg (45.41 KB)
2007-4-13 13:41
sort2.jpg (44.25 KB)
2007-4-13 13:41
最近工作太忙了。赶得很辛苦,但是总算是没有辜负大家。写完,也松了一口气。呼~~。