function printr($arr)

{

echo '';

print_r($arr);

echo '

';

}

第一组 :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

* @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 $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 '';

print_r($arr); echo '

';

//注意:按照数字方式排序时 153 比 65 小

$temp = sortArr($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");

print_r($temp);

echo '

';

3. 多维数组转一维数组

function rebuild_array($arr){ //rebuild a array

static $tmp=array();

for($i=0; $i

实例:

$arr=array('123.html','456.html',array('dw.html','fl.html',array('ps.html','fw.html')),'ab.html');

// 定义一个三维数组,用来检测我们的函数

echo '';

print_r(rebuild_array($arr));

echo '

';

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对于二维数组的相应操作介绍的很详细,希望对大家的学习有所帮助。

www.bkjia.comtrueTechArticlephp对二维数组进行相关操作(排序、转换、去空白等),php二维数组 技巧提示: array_keys($array) //返回所有键名 array_values($array) //返回所有...

php 空二位数组,php对二维数组进行相关操作(排序、转换、去空白等),php二维数组_PHP教程...相关推荐

  1. 详解二叉排序树(二叉搜索树、二叉查找树)以及Python实现相关操作

    二叉排序树 引言 1.定义 2.性质 3.操作 3.1 查找 3.2 插入 3.3 生成 3.4 删除 引言 如何更加高效的完成对数据的查询和添加操作,例如↓↓↓ 给你一个数列 (7, 3, 10, ...

  2. (C语言版)栈和队列(二)——实现顺序存储栈和顺序存储队列的相关操作

    http://blog.csdn.net/fisherwan/article/details/21479649 栈和队列都有两种实现方式,一种在之前已经写过了,是链式存储形式,另一种是顺序存储形式.也 ...

  3. 关于一维数组和二位数组的数组指针

    1. 一维数组            c语言中, 数组占用的空间是一组连续的物理内存空间. 所以对于1维数组来讲,只需要知道数组头1个元素的地址, 就可以逐个地得出各个元素的值了. 例子:       ...

  4. PHP中 如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变...

    如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变 1.$arr=array( 2. array('id'=>1,'name'=>'will','age ...

  5. php 二位数组去掉重复,PHP 二维数组去掉重复值并保持原结构

    PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...

  6. 二位数组的子数组最大值

    该题是poj的1050号题:http://poj.org/problem?id=1050 同时在<编程之美> 2.15 小节 思想是: 1.把二维降到一维,把 同一列的若干个数的和算出来, ...

  7. php数组第二位,PHP将二位数组按照第二维的某个元素的值进行排序

    //原始数组是这样的,希望能够按照第二维中的run_date升序或者降序进行排序: $arr=array( 0=>array( 'run_date'=>'2017-11-21', 'cou ...

  8. java二位数组biaoda_java基础 day14 数组 二维数组 冒泡排序 例题(正则表达式)

    数组: 数组静态初始化及遍历 package wwl.array; import java.util.Arrays; /** * 数组的静态初始化及数组遍历 * */ public class Tes ...

  9. 2022-04-07 西安 javaSE(04) 方法可变参数、重载、递归,数组、冒泡排序、二分查找、动态操作,二维数组、jvm内存区域划分

    方法 1.方法传递参数 形参是基本类型: 1.参数传递的内容是该基本类型的数据值.   2.对形式参数的改变不会影响实际参数的数据值 形参是引用类型:     1.参数传递的是地址值     2.对形 ...

最新文章

  1. 快速傅里叶变换Matlab示例
  2. 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
  3. GARFIELD@04-14-2005
  4. Objective-C设计模式——单例Singleton(对象创建)
  5. RabbitMQ(三) HelloWorld 单生产者单消费者示例实现
  6. Junipre认证必了解产品:juniper Networks SSG550M
  7. 小心中中国移动“短号集群网”的招
  8. Rocketmq技术分享
  9. Python中Queue.get()方法阻塞,怎么办?
  10. 计算机类期刊投稿心得
  11. 传记-《硅谷钢铁侠》书中的精髓:从埃隆·马斯克的精神世界和人格特质里,找寻成功的秘密。
  12. ubuntu20.04使用USB转串口进行串口调试
  13. 北航计算机组成实验project4,北航fpga实验的报告.docx
  14. 高效能人士的七个习惯及亚马逊十四条领导力准则
  15. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了
  16. mac新建文件夹快捷键
  17. [渝粤教育] 浙江大学 2021秋冬管理学(施杰2) 参考 资料
  18. 如何轻松拥有属于自己的淘宝店手机客户端?
  19. 如何在 iOS 5 中使用 Block
  20. 小米3 android8,小米8 Miui10.3 最新稳定版(10.3.6.0 Android 9.0)稳定版 快过闪电 AI加持 高级工具箱 黑域 精简 流畅 省电 实用...

热门文章

  1. 详解 equals() 方法和 hashCode() 方法
  2. 匿名对象方案与实体对象方案对比
  3. 献给写作者的 Markdown 新手指南及语法
  4. set是无序集合,放入set中的元素通过iterator输出时候是无序的
  5. 设计模式之----------适配器模式
  6. UVa 1326 - Jurassic Remains
  7. volatile关键字(转)
  8. ylb:SQL 视图(View)基础
  9. 【原创】一款符合当前主流审美的Swing外观(Look and Feel)_测试版发布
  10. one-many和many-one的关系中的inverse的详解