PHP数组类函数
来源:互联网 发布:软件项目售后服务承诺 编辑:程序博客网 时间:2024/05/18 00:55
最近在阅读<PHP经典实例>, 已经读到数组处理的章节了, 其中一些比较实用的实例手动实现了一下, 算是做个联系和笔记吧.
<?php/** * @author jixiaolong * * */class OAArray {function __construct() {}/** * */function __destruct() {}/** * @author jixiaolong 2013-12-13下午05:42:02 * @todo 支持先对元素预处理的数组排序函数, 效率高于usort * @param array $array * @param callback $map_func 数组预处理函数 * @param callback $cmp_function 用户预定义比较函数 * @return array 排序后的数组 */public static function sort($array, $map_func, $cmp_function = '') {//预处理数组(保留原有键值)$preDealedArray = array_map ( $map_func, $array );//排序(保留原有键值)if ('' == $cmp_function) {$sortRes = asort ( $preDealedArray );} else {$sortRes = uasort ( $preDealedArray, $cmp_function );}if (! $sortRes) {$message = "排序出错";throw new Exception ( $message, 0, null );}//返回排序结果$sortedArray = array ();while ( list ( $key ) = each ( $preDealedArray ) ) {//预处理后value已经发生变化,所以采用原数组的value返回$sortedArray [] = $array [$key];}return $sortedArray;}/** * @author jixiaolong 2013-12-18下午05:45:03 * @todo 求2个数组的并集 * @param array $arr1 数组1 * @param array $arr2 数组2 * @return array */public static function union(&$arr1, &$arr2) {return array_unique ( array_merge ( $arr1, $arr2 ) );}/** * @author jixiaolong 2013-12-18下午05:55:25 * @todo 判断两个数组是否相等 (不考虑key) * @return boolean */public static function equal(&$arr1 , &$arr2){$map1 = array();//创建arr1的关系数组foreach ($arr1 as $val1){$map1[$val1]++;}//创建arr2的关系数组$map2 = array();foreach ($arr2 as $val2){$map2[$val2]++;}//检测差异元素的数目是否相等$len1 = count($map1);$len2 = count($map2);if ($len1 != $len2){return false;}foreach ($map1 as $val1=>$times1){//检测有无该元素if (!array_key_exists($val1, $map2)){return false;}//检测元素出现次数是否相等if ($times1 != $map2[$val1]){return false;}}return true;}}
一并附上simple test的测试用例
<?phprequire_once '../../../fmis_test.inc.php';require_once(SIMPLE_TEST_PATH.'autorun.php');require_once(SIMPLE_TEST_PATH.'unit_tester.php');require_once WEB_PATH.'include/util/OAArray.cls.php';/** * @author jixiaolong * * */class TestOAArray extends UnitTestCase {/** * * @param string $label Name of test case. Will usethe class name if none specified. * @access public */public function __construct($label = false) {parent::__construct ( $label = false );}/** * */function __destruct() {}public function testUnion(){$arr1 = array('11','ss','cc');$arr2 = array('s','cc','1','s');$arr3 = array('11','ss','cc','s','1');$res = OAArray::union($arr1, $arr2);$res = OAArray::equal($res, $arr3);$this->assertTrue($res);}public function testEqual(){$arr1 = array('11','ss','cc');$arr2 = array('s','cc','1','s');$arr3 = array('11','ss','cc','s','1');$arr4 = array('ss','cc','11');$arr5 = array('s',1,'cc','s');$arr6 = array('s','cc','1');$arr7 = array('s','cc',1);$res1 = OAArray::equal($arr1, $arr2);$res2 = OAArray::equal($arr1, $arr4);$res3 = OAArray::equal($arr2, $arr5);$res4 = OAArray::equal($arr2, $arr6);$res5 = OAArray::equal($arr6, $arr7);$this->assertFalse($res1);$this->assertTrue($res2);$this->assertTrue($res3);$this->assertFalse($res4);$this->assertTrue($res5);}}?>
0 0
- PHP数组类函数
- PHP 数组函数-数组排序
- PHP数组和数组函数
- php入门(数组,函数,类和对象)
- PHP数组函数
- PHP数组函数-----array_values
- PHP数组函数-----array_multisort
- PHP数组函数总结
- PHP数组函数
- PHP数组函数array_push
- php数组常用函数
- php数组函数
- php数组排序函数
- PHP中的数组函数
- php 常见数组函数
- php数组函数收集
- PHP数组相关函数
- PHP数组内置函数
- Ubuntu 12.04下安装MySQL图解
- 感谢CSDN
- linux系统下的常用指令
- 内核中module_init()是被如何调用
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- PHP数组类函数
- Intelj使用
- linux常用命令
- 黑马程序员_IO(二)
- Java对象及引用
- 幻世(OurDream)2D图形引擎使用教程16——GUI图形用户界面系统(4)
- Eclipse下工程在MyEclipse下发布.mymetadata文件
- 迷宫求解最优路径
- 基于中断的linux按键驱动(mini2440)