首页 > 编程 > PHP > 正文

php对二维数组进行相关操作(排序、转换、去空白等)

2020-03-22 18:16:07
字体:
来源:转载
供稿:网友
$result=array_reverse($input); //将数组颠倒,不保留键名 $result_keyed=array_reverse($input,true); //将数组颠倒,保留键名 array_keys($array,"blue"); //返回值为blue的键名 1. PHP二维数组去重复项函数
PHP数组去除重复项有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数
function unique_arr($array2D,$stkeep=false,$ndformat=true) // 判断是否保留一级数组键 (一级数组键可以为非数字) if($stkeep) $stArr = array_keys($array2D); // 判断是否保留二级数组键 (所有二级数组键必须相同) if($ndformat) $ndArr = array_keys(end($array2D)); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 foreach ($array2D as $v){ $v = join(",",$v); $temp[] = $v; //去掉重复的字符串,也就是重复的一维数组 $temp = array_unique($temp); //再将拆开的数组重新组装 foreach ($temp as $k = $v) if($stkeep) $k = $stArr[$k]; if($ndformat) $tempArr = explode(",",$v); foreach($tempArr as $ndkey = $ndval) $output[$k][$ndArr[$ndkey]] = $ndval; else $output[$k] = explode(",",$v); return $output;
$array2D = array('first'= array('title'= '1111','date'= '2222'),'second'= array('title'= '1111','date'= '2222'),'third'= array('title'= '2222','date'= '3333'));
第一组 :sort 和 rsort ,按照PHP数组键值的顺序asc和逆序desc进行排序,同时破坏原来数组的索引关系——其实是删除索引之后重新建立从0开始的数字索引。
$a = array('a'= 1,2); sort($a); printr($a); rsort($a); printr($a); /*Array [0] = 1 [1] = 2 Array [0] = 2 [1] = 1 */ 第二组函数:asort 和 arsort ,这两个函数就比较厉害一点了,只要他们可以保留数组原有的索引关系,把上例的sort 和 rsort 分别用这两个函数替换一下
$a = array('a'= 1,2); asort($a); printr($a); arsort($a); printr($a); Array [a] = 1 [0] = 2 Array [0] = 2 [a] = 1 */ 第三组PHP数组排序函数:krsort 和 ksort ,这两个不同于以上两组,这两函数是对键名进行排序的.
$a = array('a'= 1,2); ksort($a); printr($a); krsort($a); printr($a); Array [0] = 2 [a] = 1 Array [a] = 1 [0] = 2 通过自定义函数对PHP数组进行排序,有三个函数分别是:
uasort 通过自定义函数对PHP数组的键值进行排序,并且保留原来的索引关系。
uksort 通过自定义函数对PHP数组的键名进行排序,并且保留原来的索引关系。
usort通过自定义函数对PHP数组的键值进行排序,并且删除原来的索 引关系,从零开始建立新的索引。
下面是二维排序:
* @package BugFree * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ * Sort an two-dimension array by some level two items use array_multisort() function. * sortArr($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……) * @author Chunsheng Wang wwccss@263.net * @param array $ArrayData the array to sort. * @param string $KeyName1 the first item to sort by. * @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC") * @param string $SortType1 the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING") * @return array sorted array. function sortArr($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR") if(!is_array($ArrayData)) return $ArrayData; // Get args number. $ArgCount = func_num_args(); // Get keys to sort by and put them to SortRule array. for($I = 1;$I $ArgCount;$I ++) $Arg = func_get_arg($I); if(!eregi("SORT",$Arg)) $KeyNameList[] = $Arg; $SortRule[] = '$'.$Arg; else $SortRule[] = $Arg; // Get the html' target='_blank'>values according to the keys and put them to array. foreach($ArrayData AS $Key = $Info) foreach($KeyNameList AS $KeyName) ${$KeyName}[$Key] = strtolower($Info[$KeyName]); // Create the eval string and eval it. $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);'; eval ($EvalString); return $ArrayData; 实例:
//################# 示例 ################# $arr = array( array( 'name' = '学习', 'size' = '1235', 'type' = 'jpe', 'time' = '1921-11-13', 'class' = 'dd', array( 'name' = '中国功夫', 'size' = '153', 'type' = 'jpe', 'time' = '2005-11-13', 'class' = 'jj', array( 'name' = '编程', 'size' = '35', 'type' = 'gif', 'time' = '1997-11-13', 'class' = 'dd', array( 'name' = '中国功夫', 'size' = '65', 'type' = 'jpe', 'time' = '1925-02-13', 'class' = 'yy', array( 'name' = '中国功夫', 'size' = '5', 'type' = 'icon', 'time' = '1967-12-13', 'class' = 'rr', echo ' pre print_r($arr); echo ' br //注意:按照数字方式排序时 153 比 65 小 $temp = sortArr($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING"); print_r($temp); echo ' /pre 3. 多维数组转一维数组
function rebuild_array($arr){ //rebuild a array static $tmp=array(); for($i=0; $i count($arr); $i++){ if(is_array($arr[$i])){ rebuild_array($arr[$i]); }else{ $tmp[]=$arr[$i]; return $tmp; 实例:
$arr=array('123.html','456.html',array('dw.html','fl.html',array('ps.html','fw.html')),'ab.html'); // 定义一个三维数组,用来检测我们的函数 echo ' pre print_r(rebuild_array($arr)); echo ' /pre 4. 从数组中删除空白的元素
function array_remove_empty(&$arr, $trim = true) foreach ($arr as $key = $value) { if (is_array($value)) { array_remove_empty($arr[$key]); } else { $value = trim($value); if ($value == '') { unset($arr[$key]); } elseif ($trim) { $arr[$key] = $value; 实例:
$a = array(array(3),2,'',array('',23),0); array_remove_empty($a); printr($a); // printr 函数请在本文中找 5. 获取多维数组下特定键下的值,并生成一维数组
function getall_by_key(array $arr, $key){ if (!trim($key)) return false; preg_match_all("//"$key/";/w{1}:( :/d+:|)(.* /", serialize($arr), $output); return $output[1]; $testArr = array('111'= 100, 'out'= 200, '333' = array('out' = 310, array(321, 322, 'out' = "this is a test"))); printr(getall_by_key($testArr, 'out')); 以上就是本文的全部内容,php对于二维数组的相应操作介绍的很详细,希望对大家的学习有所帮助。PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表