【数组中常用的多种遍历方式】

【for 和 foreach 略】

【while() 、 list() 、each() 组合循环遍历数组】

each()函数

a. 需要一个数组作为参数

b. 返回来的也是一个数组

c. 返回来的数组是0, 1, key, value四个下标 (固定的)

0 和key下标是当前参数数组元素的鍵

1 和value下标是当前对数数组元素的值

d. 默认认当前元素就是第一个元素

e. 每执行一次后就会将当前元素向后移动

f. 如果到最后的元素再执行这个函数,则返回 false

//Array ( [1] => 1 [value] => 1 [0] => id [key] => id )

list()函数

a. list()=array(); 需要将一个数组赋值给这个函数

b. 数组中的元素个数,要和 list()函数中的参数个数相同

c. 数组中的每个元素值会赋值 list()函数中的每个参数,list()将每个参数转为变量

d. list() 只能接收索引数组

e. 按索引的下标的顺序

$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");

while()函数

while($arr=each($user)){

//echo $arr[0]."==>".$arr[1]."<br>";

echo $arr["key"]."---->".$arr["value"]."<br>";

}

 使用数组的内部指针控制函数

next( 数组); 将数组中的内部指针向前移动一位。

prev( 数组); 将数组的内部指针倒回一位。

reset( 数组) 将数组的内部指针指向第一个元素。

end( 数组);  将数组的内部指针指向最后一个元素。

current( 数组);  返回数组中的当前元素。

key( 数组);  从关联数组中取得键名。

【代码示例】    

<?php
$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");
while(list($key, $value)=each($user)){
    echo $key." : ".$value."<br>";
}
echo "<hr>";
reset($user);
while(list($key, $value)=each($user)){
    echo $key." : ".$value."<br>";
}
echo "<hr>";
reset($user);
next($user);
next($user);
while(list($key, $value)=each($user)){
    echo $key." : ".$value."<br>";
}
echo "<hr>";
reset($user);
echo current($user)." : ".key($user)."<br>";
end($user);
echo current($user)." : ".key($user)."<br>";
prev($user);
echo current($user)." : ".key($user)."<br>";
?>

【数组键 /值操作有关的函数】

1. array_values()  返回数组中所有的值。 提示: 被返回的数组将使用数值键,从 0 开始且以 1 递增。

2. array_keys()    返回数组中所有的键名。

3. in_array()  在数组中搜索给定的值     in_array(value,array,true) 检查搜索的数据与数组的值的类型是否相同。

4. array_key_exists  检查给定的键名或索引是否存在于数组中。

5. array_flip -- 交换数组中的键和值

6. array_reverse --  返回一个单元顺序相反的数组

【统计数组元素的个数和惟一性】

1. count() sizeof();

2. array_count_values -- 统计数组中所有的值出现的次数

3. array_unique -- 移除数组中重复的值

【使用回调函数处理数组的函数】

1. array_filter()  用回调函数过滤数组中的单元

2. array_walk()    数组中的每个成员应用用户函数

3. array_map()     将回调函数作用到给定数组的单元上

◆ 实例演示: array_filter () ,取出数组中大于 0的数。

<?php
 $arr=array(1,2,3,4,5,-6,7,7,8,8,-9,9,10,11,-12);
 $arr1=array_filter($arr, "myfun");
 function myfun($n){
    if($n>0)
       return true;
    else
       return false;
 }
 print_r($arr1);
?>

◆ 实例演示: array_walk()

<?php
$lamp=array("os"=>"linux", "wb"=>"apache", "db"=>"mysql", "la"=>"php");
array_walk($lamp, "myfun1"); echo '<hr>';
array_walk($lamp, "myfun2", "========");

function myfun1($value, $key){
    echo "The key '{$key}' has '$value' <br>";
}
function myfun2($value, $key, $p){
    echo "The key '{$key}' has {$p} '$value' <br>";
}
?>

◆ 实例演示: array_map() ,判断两个数组中的值是否相同。

<?php
$lamp=array("os"=>"linux", "wb"=>"apache", "db"=>"mysql", "la"=>"php");
$lp=array("os"=>"window", "wb"=>"apache", "db"=>"oracle", "la"=>"php");
$arr=array_map("myfun1", $lamp, $lp);
function myfun1($n, $t){
    if($n==$t){
       return "same";
    }else{
       return "different";
    }
}
print_r($arr);
?>

◆ 实例演示: array_values ()

<?php
$lamp=array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySqL", "laguage"=>"php");
$arr=array_values($lamp);
print_r($arr);echo '<hr>';

list($a,$b,$c,$d)=$arr;
echo $a."<br>";
echo $b."<br>";
echo $c."<br>";
echo $d."<br>";
?>

◆ 实例演示: array_keys ()

<?php
$lamp= array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySql", "laguage"=>100, "html"=>"100");
$arr1=array_keys($lamp);  print_r($arr1); echo '<hr>'; //取出所有的key
$arr2=array_keys($lamp, "100");  print_r($arr2); echo '<hr>';//取出符合条件的key
$arr3=array_keys($lamp, "100", true);  print_r($arr3); //取出符合条件并且类型相同的 key
?>

◆ 关于 count() 函数,传递true 则计算所有子节点的个数:

$lamp= array("os"=>"linux", "webserver"=>"Apache", "db"=>"MySql",array(1,2,3,4, array('A','B','C')));
echo count($lamp, true); // 结果12
echo count($lamp); // 结果4

【数组的排序函数】

1. 简单的数组排序   sort() rsort()

2. 根据键名对数组排序   ksort() krsort()

3. 根据元素的值对数组排序   asort() arsort()

4. 根据“自然数排序”法对数组排序   natsort()  natcasesort()  用“ 自然排序”算法对数组进行(不区分大小写字母的)排序。

5. 根据用户自定义规则对数组排序   usort() uasort() uksort()

6. 多维数组的排序   array_multisort  (较复杂,详见手册)

【拆分、合并、分解、接合的数组函数】

1. array_slice(array,offset,length,preserve)   在数组中根据条件取出一段值,并返回。 preserve可选。可能的值: true - 保留键; false - 默认 - 重置键

2. array_splice()

3. array_combine();  通过合并两个数组来创建一个新数组。

4. array_merge();  把一个或多个数组合并为一个数组。

5. array_intersect(array1,array2,[array3...]);  计算数组的交集。

6. array_diff()

【数组与数据结构的函数】

1. 使用数据实现堆栈

array_push(array);  将一个或多个单元(元素)压入数组的末尾(入栈)。

array_pop(array);   将数组最后一个单元弹出(出栈)。

2. 使用队列

array_unshift()  在数组开头插入一个或多个元素。

array_shift()    删除数组中的第一个元素,并返回被删除元素的值。

unset()

【其它与数据操作有关的函数】

array_rand(array,number)     从数组中随机选出一个或多个元素,并返回。 number   可选。默认是 1。规定返回多少个随机的元素。

shuffle()

array_sum()

range(first,second,step)   建立一个包含指定范围的元素的数组。

PHP常用的数组相关处理函数的更多相关文章

  1. PHP基础-常用的数组相关处理函数

    一 数组键/值操作有关的函数 1. array_values()//获取数组中所有的值 $lamp=array("os"=>"linux", " ...

  2. PHP基础系列(二) PHP数组相关的函数分类整理

    之前写过一篇介绍 PHP字符串函数 的博文,这里写第二篇,本文主要介绍PHP 数组相关的函数: 一.检查数组中是否存在 array_key_exists — 检查给定的键名或索引是否存在于数组中 ar ...

  3. 【php】php数组相关操作函数片段

    下面这些都是我在工作中用到的函数,现在整理下. 判断是否是一个数组 function _is_array($value){ if (is_array($value)) { return true; } ...

  4. 最常用的~正则表达式-相关js函数知识简洁分享【新手推荐】

    一.正则表达式的创建 JS正则的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 varregObj =newRegExp("(^\s+)|(\s+ ...

  5. php 数组相关的函数?

    array()----创建数组array_combine()----通过合并两个数组来创建一个新数组range()----创建并返回一个包含指定范围的元素的数组compact()----建立一个数组a ...

  6. matlab 常用集合相关的函数

    Matlab常用的集合相关的函数如下:     union(A,B)              %求集合A和集合B的并集     intersect(A,B)             %求集合A和集合 ...

  7. php array数组的相关处理函数and str字符串处理与正则表达式

    下面给各位同学整理了一些关于php array数组的相关处理函数and str字符串处理与正则表达式,希望文章对你会有所帮助.   数组的相关处理函数: 1)数组的键值操作函数 array_value ...

  8. c/c++ 图相关的函数(二维数组法)

    c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个 ...

  9. php常用字符串数组函数

    Php常用的数组函数 键值操作 Array_values($arr) 获取数据的值 Array_keys($arr) 获取数组的key Array_flip($arr) 数组键值反转 In_array ...

随机推荐

  1. PLSQL 的简单命令之二

    --1. 查询工资大于12000的员工姓名和工资 --2. 查询员工号为176的员工的姓名和部门号 ' --3. 选择工资不在5000到12000的员工的姓名和工资 --4. 选择雇用时间在1998- ...

  2. [Sublime Text] How to Install Sublime Text on Ubuntu

    For Sublime-Text-2: sudo add-apt-repository ppa:webupd8team/sublime-text- sudo apt-get update sudo a ...

  3. String的replaceAll方法中的正则表达式用法

    项目里面 需要对已手机号码进行 如下的显示 比如15088688388 要显示为150****8388的效果 实现这个简单的效果 方法有很多 我想试试用正则表达式去实现 查了点资料最终试出来以下方法可 ...

  4. linux:ACL权限

    ACL权限是为了防止权限不够用的情况,一般的权限有所有者.所属组.其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限: 比如:一个网络老师,给一个班的学员上课,他在linux的根目录下 ...

  5. 收集一些java相关的文章

    有些文章看了,以后想再看已经忘了在哪里了.故在此一一记录下那些值得看的文章. 1:如何确定Java对象的大小 中文版本 :http://article.yeeyan.org/view/104091/6 ...

  6. Python:使用psycopg2模块操作PostgreSQL

    安装psycopg2模块: 怎么验证是否已经安装过psycopy2? 编写上面代码,运行看是否抛出缺少psycopg2模块. 安装方法1: 1)使用psycopg2-2.4.2.win-amd64-p ...

  7. J2EE MyBatis使用

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

  8. PostgreSQL Replication之第十章 配置Slony(4)

    10.4 部署DDLs 对于生产性的应用程序来说,仅仅复制一个表明显是不够的.此外,通过没有办法保证数据从来不会发生改变.在某些时候,部署变化的数据结构(所谓的DDLs)是必要的. 现在的问题是,Sl ...

  9. getch()函数

    这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性! 中文名 无 外文名 getch 头文件 co ...

  10. Leetcode: Number of Islands II && Summary of Union Find

    A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand oper ...