php数组操作学习笔记

小编今天给大家来总结php中数组操作的一些入门学习笔记了,包括了:数据创建,赋值,遍历,查找,统计,多维数组等等在php中数组各种操作,有需要了解的朋友可参考.

什么是数组?

数组是一个数据的集合,相当于一个容器,可以将数据按一定的规则存到这个容器中.相当于旅馆,旅馆内有很多房间,而房间按照一定的规则编号.

数组的构成:基本结构形式如下:

$数组名 (键)= 值 数组名:是一个数组区别于另一个数组的方式,就像每个旅馆都有一个名字.

键(key):也成为指针、索引或者标识符.键代表某值在数组中存放的位置,相当于旅馆的门牌号,可以用不同方式命名.通过查询键可以找到相应的值.

值(value):值相当于房间内存放的东西.

赋值创建数组

在php中,创建数组有变量赋值和调用函数两种方法,这里先讲前者.使用变量赋值方法很简单,直接给一个数组变量赋值即可.

实例代码如下:

  1. $lang[]="php";
  2. $lang[]="html";
  3. $lang[]="css";
  4. echo "$lang[0]

    ";

  5. echo "$lang[1]

    ";

  6. echo "$lang[2]

    ";

  7. ?>

三个赋值语句产生的数组内容:

0=>php

1=>html

2=>css

创建数组

除了上面介绍的赋值创建数组,还有调用函数的方法创建数组.php提供了array函数来穿件一个数组,基本结构形式如下:

array (item1,item2... ,itemn)

/* item表示数组中的元素值.array()函数创建数组时自动给元素值分配标识符,从0依次增加 */

实例代码如下:

  1. $student=array("Tom","Jacky","Rose");
  2. echo $student[0] ."t";
  3. echo $student[1] ."t";
  4. echo $student[2];
  5. ?>

数组键名

1、键名分配

在用array()函数创建数组时,键名会自动分配到各个值.另外,我们也可以按自己的需要直接给元素分配键名.

基本结构形式:

array ( key => item )

实例代码如下:

  1. $a=array(1 => "you",2 =>"are ", 5 =>"how ");
  2. echo $a[5];
  3. echo $a[2];
  4. echo $a[1];
  5. ?>

2、用字符串作键名

不但可以用整数作为键名,也可以使用字符串作为键名.使用字符串作为键名的数组成为字符串索引(string-indexed)数组.

实例代码如下:

  1. $a=array("php"=>"动态网页","html"=>"静态网页","css"=>"网页排版");
  2. echo $a["php"] ."

    ";

  3. echo $a["html"] ."

    ";

  4. echo $a["css"];
  5. ?>

3、键名的修改

实例代码如下:

  1. $arr = array("a" => "新浪",
  2. "b"=>"网易",
  3. "c" => "腾讯", "雅虎"
  4. );
  5. $arr[a] = "PHP中文社区";
  6. $arr['e'] = "新浪";
  7. $arr[] = "百度";
  8. echo $arr['a'] ."

    ";

  9. echo $arr['b'] ."

    ";

  10. echo $arr['c'] ."

    ";

  11. echo $arr['e'] ."

    ";

  12. echo $arr[0] ."

    ";

  13. echo $arr[1] ."

    ";

  14. ?>

创建多维数组

在php程序编写时,一维数组有时不能满足需求,这时就要用到多维数组.多维数组就是在一维数组的基础上再增加一个或多个细下标,用法与一维数组大致相同,只是多维数据操作更为复杂,不过功能更强大.

以二维数组为例,就像大房子里面套有小房子,表示方法为$a[0][0].

实例代码如下:

  1. $a[0][0]=1;
  2. $a[0][1]=2;
  3. $a[0][2]=3;
  4. $a[1][0]=4;
  5. $a[1][1]=5;
  6. $a[1][2]=6;
  7. for($i=0;$i<=1;$i++){
  8. for($j=0;$j<=2;$j++){
  9. echo "$a[$i][$j]=" .$a[$i][$j] ."

    "; /* "$"表示输出变量符号$ */

  10. }
  11. }
  12. ?>

输出数组

输出数组是指将数组的的所有元素数据显示在浏览器上,php怎么输出数组?常用的php输出数组函数有var_dump()和print_r()函数.

1、var_dump函数递归展开数组元素,显示数组各元素的类型、键名和元素值.

实例代码如下:

  1. $a=array(0,5,array("php","html","css")); /* 创建一个嵌套的数组 */
  2. var_dump($a);
  3. ?>

2、print_r函数值显示数组元素的键名和元素值.

实例代码如下:

  1. $b=array(1,2,3);
  2. print_r($b);
  3. ?>

测试数组

有时候我们不清楚某个变量是不是数组,可以用is_array()函数来测试判断.

基本结构形式:

is_array ( 变 量 )

检测变量是否数组,如果是则返回true,否则返回false.

实例代码如下:

  1. $a="apple iphone";
  2. if(is_array($a)){
  3. var_dump($a);
  4. }
  5. else echo "不是数组";
  6. ?>

foreach遍历数组

我们在运用数组时,常常要遍历数组并获得各个键或者元素值,php提供了一些专门遍历数组的函数.这里先介绍foreach遍历数组函数的用法.

结构形式实例代码如下:

  1. foreach ( array_expression as $value ) statement
  2. /* array_expression是要遍历的数组
  3. as作用是将数组的值赋给$value
  4. statement是后续语句
  5. */

实例1:

  1. $color=array('white' => '白色' ,
  2. 'black' => '黑色' ,
  3. 'red' => '红色' ,
  4. 'green' => '绿色',
  5. 'yellow' => '黄色');
  6. foreach( $color as $c) echo $c ."

    ";

  7. >

通过foreach不仅可以获得元素的值也可以获得键名,结构形式:

foreach ( array_expression as $key => $value ) statement

将以上实例中第7行的代码:

实例代码如下:

  1. foreach( $color as $c) echo $c ."

    ";

  2. 改为:
  3. foreach( $color as $key => $c) echo $key.$c ."

    ";

查找数组元素值

php获取数组键名可以用array_search()来实现,结构形式如下:

array_search( $needle,$haystack )

/* 参数$needle表示要查找的值 */

/* $haystack表示查找对象 */

array_search()函数返回的是键名,而不是布尔值,找不到时返回false.找到的元素如果正好是第一个元素,则返回0.而php会自动转化成false,所以需要使用”===”判断返回值.(“===”判断是否全等,详:php关系运算符)

实例代码如下:

  1. $s=array("a","b","c","d","e","f");
  2. $i=array_search("a",$s); /* 查找数组是否有字符"a" */
  3. if($i===false) /* 判断查找结果 */
  4. echo "在数组s中找不到字符'a'";
  5. else echo "输出数组$s的键名:" .$i; /* 输出键名 */
  6. ?>

计算数组元素个数

数组也像变量一样可以进行运算,例如需要php统计数组元素个数时,我们可以利用count()函数来计算数组中元素的个数.

结构形式实例代码如下:

  1. count ( $var,$mode )
  2. /* $var参数$var通常是一个数组,函数返回var中的单元数目 */
  3. /* mode是可选参数 */

实例:

  1. $a=array("peple","man","women");
  2. $b=count($a); /* 统计数组元素个数 */
  3. echo $b;
  4. ?>

数组排序

php提供了一系列的数组排序函数,我们可以根据需要对数组进行排序.数组的排序主要有三种方式:

按键值排序

即按标识符ASCⅡ码值的大小排列顺序.

ksort(): 按照数组标识符顺序排列

krsort(): 按照数组标识符逆序排

实例代码如下:

  1. $languages=array(
  2. 'c'=>'php',
  3. 'd'=>'asp',
  4. 'a'=>'jsp',
  5. 'b'=>'java'
  6. );
  7. krsort($languages);
  8. foreach($languages as $key=>$val){
  9. echo "$key = $val".'

    ';

  10. };
  11. ?>

按元素值排序

asort(): 按照由小到大的顺序对数组排序;

rsort(): 按照由大到小的顺序对数组逆序排序.

将实例1的8-11行代码改为:

例代码如下:

  1. asort($languages);
  2. print_r($languages);
  3. echo "

    ";

  4. rsort($languages);
  5. print_r($languages);

删除原有键名排序

sort(): 按照由小到大的顺序对数组排序;

rsort(): 按照由大到小的顺序对数组逆序排序.

将实例2的8-11行代码改为:

实例代码如下:

  1. sort($languages);
  2. foreach($languages as $key=>$val){
  3. echo "languages[$key] = $val".'

    ';

  4. };

数组运算符

合并数组计算实例代码如下:

  1. $a=array(
  2. 'a'=>'php',
  3. 'b'=>'html',
  4. 'c'=>'css'
  5. );
  6. $b=array(
  7. 'a'=>'asp',
  8. 'b'=>'jsp'
  9. );
  10. $c=$a+$b; /* 合并数组 */
  11. var_dump($c);
  12. echo "

    ";

  13. $c=$b+$a; /* 调换顺序合并数组 */
  14. var_dump($c);
  15. ?>

数组的比较实例,实例代码如下:

  1. $a=array('php','asp');
  2. $b=array(1=>'asp',0=>'php');
  3. var_dump($a==$b);
  4. var_dump($a===$b);
  5. ?>

数组运算符

例子 名称 结果

$a + $b 联合 $a 和 $b 的联合.

$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE.

$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE.

$a != $b 不等 如果 $a 不等于 $b 则为 TRUE.

$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE.

$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE.