发新话题
打印

FleaPHP-Array类使用说明

FleaPHP-Array类使用说明

[提交手册]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



最近工作太忙了。赶得很辛苦,但是总算是没有辜负大家。写完,也松了一口气。呼~~。
空间出租:P4 3.0+1G+RIAD 1 160G+PHP+IIS+MYSQL+MDaemon

QQ:126682182
Email:hhyisw@163.com
Home:http://www.stksky.com

TOP

发新话题