php数组操作学习笔记

什么是数组?

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

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

$数组名 (键)= 值 数组名:是一个数组区别于另一个数组的方式,就像每个旅馆都有一个名字。
键(key):也成为指针、索引或者标识符。键代表某值在数组中存放的位置,相当于旅馆的门牌号,可以用不同方式命名。通过查询键可以找到相应的值。
值(value):值相当于房间内存放的东西。

赋值创建数组

在php中,创建数组有变量赋值和调用函数两种方法,这里先讲前者。

使用变量赋值方法很简单,直接给一个数组变量赋值即可。

实例:

 代码如下 复制代码

<?php
 $lang[]="php";
 $lang[]="html";
 $lang[]="css";
 echo "$lang[0] <br>";
 echo "$lang[1] <br>";
 echo "$lang[2] <br>";
?>

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

0=>php

1=>html

2=>css

创建数组

除了上面介绍的赋值创建数组,还有调用函数的方法创建数组。

php提供了array函数来穿件一个数组,基本结构形式如下:

array (item1,item2... ,itemn)

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

 代码如下 复制代码

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

数组键名

1、键名分配

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

基本结构形式:

array ( key => item )

实例1:

 代码如下 复制代码
 <?php
 $a=array(1 => "you",2 =>"are ", 5 =>"how ");
 echo $a[5];
 echo $a[2];
 echo $a[1];
?>

2、用字符串作键名

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

实例2:

 代码如下 复制代码
<?php
 $a=array("php"=>"动态网页","html"=>"静态网页","css"=>"网页排版");
 echo $a["php"] ."<br>";
 echo $a["html"] ."<br>";
 echo $a["css"];
?>

3、键名的修改

实例3:

 代码如下 复制代码

<?php        
 $arr = array("a" => "新浪",   
   "b"=>"网易",    
   "c" => "腾讯", "雅虎"  
  );
  $arr[a] = "PHP中文社区";  
  $arr['e'] = "新浪";   
  $arr[] = "百度";    
 echo $arr['a'] ."<br>";   
 echo $arr['b'] ."<br>";   
 echo $arr['c'] ."<br>";   
 echo $arr['e'] ."<br>";   
 echo $arr[0] ."<br>";    
 echo $arr[1] ."<br>";    
?>

创建多维数组

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

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

实例:

 代码如下 复制代码

<?php
 $a[0][0]=1;
 $a[0][1]=2;
 $a[0][2]=3;
 $a[1][0]=4;
 $a[1][1]=5;
 $a[1][2]=6;
 for($i=0;$i<=1;$i++){
  for($j=0;$j<=2;$j++){
   echo "$a[$i][$j]=" .$a[$i][$j] ."<br>"; /* "$"表示输出变量符号$ */
  }
 }
?>

输出数组

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

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

实例1:

 代码如下 复制代码
<?php
 $a=array(0,5,array("php","html","css")); /* 创建一个嵌套的数组 */
 var_dump($a);
?>

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

实例2:

 代码如下 复制代码

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

测试数组

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

基本结构形式:

is_array ( 变 量 )

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

实例:

 代码如下 复制代码

<?php
 $a="apple iphone";
 if(is_array($a)){
   var_dump($a);
  }
 else echo "不是数组";
?>

foreach遍历数组

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

结构形式:

 代码如下 复制代码

 foreach ( array_expression as $value ) statement
/* array_expression是要遍历的数组
   as作用是将数组的值赋给$value
   statement是后续语句
 */
实例1:

 <?php
 $color=array('white' => '白色' ,
       'black' => '黑色' ,
       'red' => '红色' ,
       'green' => '绿色',
       'yellow' => '黄色');
 foreach( $color as $c) echo $c ."<br>";   
?>

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

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

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

 

 代码如下 复制代码

 foreach( $color as $c) echo $c ."<br>";
改为:

 foreach( $color as $key => $c) echo $key.$c ."<br>";

查找数组元素值

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

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

实例:

 代码如下 复制代码

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

计算数组元素个数

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

结构形式:

 代码如下 复制代码

 count ( $var,$mode )
/* $var参数$var通常是一个数组,函数返回var中的单元数目 */
/* mode是可选参数 */
实例:

<?php
 $a=array("peple","man","women");
 $b=count($a); /* 统计数组元素个数 */
 echo $b;
?>

数组排序

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

按键值排序

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

ksort(): 按照数组标识符顺序排列
krsort(): 按照数组标识符逆序排
实例1:

 代码如下 复制代码
<?php
 $languages=array(
  'c'=>'php',
  'd'=>'asp',
  'a'=>'jsp',
  'b'=>'java'
 );
 krsort($languages);
 foreach($languages as $key=>$val){
  echo "$key = $val".'<br>';
 };
?>

按元素值排序

 asort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例1的8-11行代码改为:

 

 代码如下 复制代码
  asort($languages);
 print_r($languages);
 echo "<br>";
 rsort($languages);
 print_r($languages);

删除原有键名排序

 sort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例2的8-11行代码改为:

 

 代码如下 复制代码

sort($languages);
 foreach($languages as $key=>$val){
  echo "languages[$key] = $val".'<br>';
 };

 

数组运算符

合并数组计算实例:

 代码如下 复制代码
<?php
 $a=array(
   'a'=>'php',
   'b'=>'html',
   'c'=>'css'
 );
 $b=array(
   'a'=>'asp',
   'b'=>'jsp'
 );
 $c=$a+$b; /* 合并数组 */
 var_dump($c);
 echo "<br>";
 $c=$b+$a; /* 调换顺序合并数组 */
 var_dump($c); 
?>

数组的比较实例:

 代码如下 复制代码
<?php
 $a=array('php','asp');
 $b=array(1=>'asp',0=>'php');
 var_dump($a==$b);
 var_dump($a===$b);
?>

数组运算符
例子
名称
结果
$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

时间: 2024-10-24 19:12:34

php数组操作学习笔记的相关文章

javascript 数组操作学习笔记

1.数组的创建  代码如下 复制代码 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值     要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为

C语言一维数组初步学习笔记_C 语言

数组 可以存储一组或者多组数值的变量,里面包含多个元素,数组的每个成员都是一个数组元素. 一维数组 定义:类型 数组名[常量表达式] = {值1, 值2, 值3-}; int a[3] = {0, 1, 2}; float f[2] = {1.2, 2.3, 3.14}; char str[] = {'h', 'e', 'l', 'l', 'o'}; chat str1 = "iPhone";//这也是定义字符数组的方法,字符数组后面会详细讲解,这里先了解一下 当数组元素个数为变量时,

php 常用文件操作学习笔记

1.获取文件名:basename(); 2.获取文件所在的目录:dirname(); 3.pathinfo()获取文件信息,返回结果为一个array,包括路径.文件全名.文件名和扩展名.例如:  代码如下 复制代码 $file = '/com/netingcn/error.log'; print_r(pathinfo($file)); 结果为: Array(     [dirname] => /com/netingcn     [basename] => error.log     [exte

Ruby数组(Array)学习笔记_ruby专题

1.数组的定义 Ruby中的数组是动态数组,存储的数据不用限定类型,数组的长度是根据存储需要动态扩展,所以,在进行数据定义的时候,只用用最简单的方式new一个Array对象就可以了,可以使用以下几种方式: 复制代码 代码如下: arr1=[]      #最简单的Array创建方式 arr2=Array.new    #标准的Array创建方式 arr3=%w[This is a example!] #%w方式转换既定字符串为数组 arr4=(1..10).to_a   #其他集合对象转换为数组

C语言返回数组的学习笔记

问题来源于今天三班一个学霸问我,他的程序没法运行,什么情况? 那来看看他写的程序,虽然看着有些不舒服.  代码如下 复制代码 #include <stdio.h> #include <string.h> int main() {  char tra(char str[]);  char b[80];  gets(b);  puts(tra(b)); return 0; } char tra(char str[]) {  char stri[80]; int i,j,k=0; i=s

JavaScript权威设计--JavaScript数组(简要学习笔记九)

1.数组的创建 如: var a=[1.1,null,"a"]; var b=[1, ,3]; //中间的那个元素是undefined var c=[ , , ] 这里c.length你是不是以为是3? 哈哈,长度应该是2.因为数组直接量的语法允许有可选的结尾逗号.   2.数组索引的其他种类 a[-1.23]=true    //创建一个名为-1.23的属性 a["1000"]=0    //如果是字符串,它就转换为数组的索引 a[1.000]    //和a[1

js数组操作学习总结_javascript技巧

shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefinedvar a = [1,2,3,4,5];var b = a.shift();     结果 a:[2,3,4,5]     b:1 unshift:将参数添加到原数组开头,并返回数组的长度var a = [1,2,3,4,5];var b = a.unshift(-2,-1); 结果 a:[-2,-1,1,2,3,4,5]      b:7 注:在IE6.0下测试返回值总为undefined,FF2.0下测试返

Python日期操作学习笔记_python

比如用 print ','.join(datelist) 就可以将datelist列表里面的所有项目并成一个字符串,当然这个表达式会在每一个项目中间插入一个逗号,这种方式比用循环的方式更简洁. 日期的操作必须使用time或datetime库 import time >>> s="2006-1-2" >>> time.strptime(s,"%Y-%m-%d) 这是将字符串格式的日期及时间转成日期对象 转义符对应意义如下 %a 本地简化星期名

javascript对象和数组的学习笔记

什么是对象 其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.ECMAScript中引用类型是一种数据类型,用于将数据和功能组织在一起.它也常称为类. 1.Object类型 使用new Object(); 使用字面量创建  代码如下 复制代码 var box = { name: 'caibaojian.com', age: 24 } 输出 alert(box.name) alert(box['name']); var box = { run: function(){ return '1