个人PHP学习笔记(四)--数组
2015-05-18 12:40
405 查看
目录
基本语法语句结构
函数
数组
面向对象的程序设计
字符串
正则表达式
常用函数
文件系统
图形图像处理
MySQL数据库
Cookie&Session
错误和异常
数组
概述
PHP的弱类型性质,可以存储的内容是多种类型,不需要担心数据类型的问题。数组的长度可以动态增长的。
数组的本质就是储存,管理和操作一组变量。数组储存的就是一系列变量值。
姓名 | 性别 | 年龄 | 公司 | 电子邮件 |
---|---|---|---|---|
Marshall | 男 | 20 | Abstergo | marshall@exp.com |
John | 女 | 22 | Bobo | john@exp.com |
<?php $marshall_name='Marshall'; $marshall_sex='man'; $marshall_age=20; $marshall_com='Abstergo'; ... ?> //不使用数组 <?php $marshall_info=array('Marshall','man',20,'Abstergo','marshall@exp.com'); $john_info=array('John','woman',22,'Bobo','john@exp.com'); ?> //使用数组
索引数组
姓名 | 性别 | 年龄 | 公司 | 电子邮件 |
---|---|---|---|---|
Marshall | 男 | 20 | Abstergo | marshall@exp.com |
0 | 1 | 2 | 3 | 4 |
默认数组使用从0开始的数字依次递增来对应每个元素。
关联数组
姓名 | 性别 | 年龄 | 公司 | 电子邮件 |
---|---|---|---|---|
Marshall | 男 | 20 | Abstergo | marshall@exp.com |
name | sex | age | com |
初始化数组
直接赋值初始化索引数组
$name [exp] = val //变量数组名+索引(下标)+赋值符号+元素内容 <?php $marshall_info[0]='Marshall'; $marshall_info[1]='man'; $marshall_info[2]='20'; $marshall_info[3]='Abstergo'; $marshall_info[4]='marshall@exp.com'; ?>
如果在直接赋值声明数组时不定义索引值,系统会默认从下标0开始依次递增
如果在声明的时候索引被指定了一个值,那么后面的元素下标会递增。
如果在声明的时候索引被定义了一个值,在递增过程中遇到了较小的下标,那么递增会跳过这个下表,在后面继续递增。
如果在声明的时候索引被定义了一个值,在递增过程中遇到了较大的下标,那么程序会以这个下标开始递增。
直接赋值初始化关联数组
$name [exp] = val //变量数组名+索引(下标)+赋值符号+元素内容 <?php $marshall_info[name]='Marshall'; $marshall_info[sex]='man'; $marshall_info[age]='20'; $marshall_info[com]='Abstergo'; $marshall_info[email]='marshall@exp.com'; ?>
如果在声明时不给下标指定一个值,那么系统就会从下标0开始,并且递增。
使用array()初始化数组
$name=array($key=>$value,$key2=>$value2,$key3=>$value3,...) //$key索引 $name=array($value,$value2,$value3,...) //默认为索引数组,下标从0开始 <?php $marshall_info=array('name'=>'Marshall', 'sex'=>'man', 'age'=>20, 'com'=>'Abstergo', 'email'=>'marshall@exp.com'); print_r($marshall_info); ?>
数组的类型
一维数组
$arr_name=array(value1,value2,...) $arr_name[$key] <?php $marshall_info=array('name'=>'Marshall', 'sex'=>'man', 'age'=>20, 'com'=>'Abstergo', 'email'=>'marshall@exp.com'); print_r($marshall_info); echo '姓名:'.$marshall_info['name'].'<br/>'; echo '性别:'.$marshall_info['sex'].'<br/>'; echo '年龄:'.$marshall_info['age'].'<br/>'; echo '公司:'.$marshall_info['com'].'<br/>'; echo '邮箱:'.$marshall_info['email']; $k='name'; echo '姓名:'.$marshall_info[$k].'<br/>'; $k='sex'; echo '性别:'.$marshall_info[$k].'<br/>'; $k='age'; echo '年龄:'.$marshall_info[$k].'<br/>'; $k='com'; echo '公司:'.$marshall_info[$k].'<br/>'; $k='email'; echo '邮箱:'.$marshall_info[$k]; ?>
多维数组
<?php $arr=array(array(1,2,3),array(4,5,6),array(7,8,9)); print_r($arr); echo $arr[2][2]; ?>
多维数组也可以是索引数组
$arr=array('ONE'=>array('one'=>1,'two'=>2,'three'=>3), 'TWO'=>array('one'=>4,'two'=>5,'three'=>6), 'THREE'=>array('one'=>7,'two'=>8,'three'=>9));
三维数组不再赘述。
数组的遍历
for,for-each循环遍历数组
1.for循环 <?php $arr=array(1,2,3,4,5,6); echo '$arr数组中元素的值如下:'; for($i=0;$i<6;$i++) { echo '<br/>'.$arr[$i]; } ?> count ($var,$mode) //$mode=0计算数组中的第一维的元素个数,$mode=1递归计算数组中的多维的所有元素个数 <?php $arr=array(array(1,2,3),array(4,5,6),array(7,8,9)); echo '$arr数组中所有元素的值如下:'; for($x=0;$x<count($arr);$x++) { for($y=0;$y<count($arr[$x]);$y++) { if($arr[$x][$y]) { echo '<br/>'.$arr[$x][$y]; } else { echo '<br/>'.$arr[$x]; } } } ?> 2.for-each循环 foreach (array_name as $value) foreach (array_name as $key=>$value) <?php $arr=array(1,2,3,4,5,6,7,8,9); foreach($arr as $k=>$v) { echo "数组中的第".$k."元素是:".$v.'<br/>'; //可以输出键值对 } ?> <?php $arr=array(1,2,3,4,5,6,7,8,9); foreach($arr as &$v) { $v*=2; //引用的方式 } foreach($arr as $k=>$v) { echo "数组中的第".$k."元素是:".$v.'<br/>'; } ?>
each( ),list( )和while循环便利数组
each函数
接受一个数组变量名参数,返回数组中当前指针位置的键值对并向后移动数组指针键值对被返回为4个元素的数组,键名为0,1,key和value。
元素0和key包含有数组元素的键名,1和value包含有数据。
如果内部指针超越了数组的末端,则返回FALSE.
<?php $arr=array('name'=>'Marshall','age'=>20); print_r(each($arr)); echo '<br/>'; print_r(each($arr)); echo '<br/>'; var_dump(each($arr)); //验证指针 ?>
list函数
把数组中的值赋给一些变量。使用一次操作,给多个变量赋值。
list内参数和数组内元素是一一对应的。
list内参数个数小于数组内元素个数,则程序会把数组内对应个数的元素赋值给函数参数。
list内参数个数大于数组内元素个数,则程序会发出警告。
<?php $arr=array('A','B','C','D'); list($a,$b,$c,$d)=$arr; echo "\$a=$a,\$b=$b,\$c=$c,\$d=$d"; list($e,$f)=$arr; echo "\$e=$e,\$f=$f"; ?> <?php $arr=array('one'=>'A','two'=>'B','three'=>'C'); list($k,$v)=each($arr); //list只能接受索引数组,对list来说:参数就是索引值和元素内容 echo "$k=>$v<br/>"; //Array([0]=>one [1]=>A) list($k,$v)=each($arr); echo "$k=>$v<br/>"; list($k,$v)=each($arr); echo "$k=>$v<br/>"; ?>
while循环和each( )函数联合使用遍历数组
<?php $arr=array('one'=>'A','two'=>'B','t bb0c hree'=>'C','four'=>'D'); while($n=each($arr)) { echo $n['key'].'=>'.$n['value'].'<br/>'; //字符串 echo $n[0].'=>'.$n[1].'<br/>'; //索引数组同样适用 } ?>
while循环和each( ),list( )联合遍历数组
<?php $arr=array('one'=>'A','two'=>'B','three'=>'C','four'=>'D'); while(list($x,$y)=each($arr)) { echo "$x=>$y<br/>"; } ?>
数组内部指针控制函数
数组的内部指针是数组的组织机构,它可以指向数组中任意一个元素。默认指向数组的第一个元素。
通过控制指针的移动,可以访问到数组中的任意一个元素。
函数名 | 说明 |
---|---|
current() | 返回当前元素的内容。并不移动指针。超出元素列表末端则返回FALSE。 |
key() | 返回当前元素的索引值 |
next() | 返回数组内部指针指向的下一个元素的内容,没有时则返回FALSE。元素的值为空或者为0也会返回FALSE。 |
prev() | 返回数组内部指针指向的前一个元素的内容,没有时则返回FALSE。元素的值为空或者为0也会返回FALSE。 |
end() | 将数组的内部指针移动到最后一个元素并返回其值 |
reset() | 将数组的内部指针倒回到第一个元素并返回其值,数组为空则返回FALSE。 |
<?php $arr=array('one'=>'A','two'=>'B','three'=>'C','four'=>'D'); echo 'current()=>'.current($arr).'<br/>'; echo 'key()=>'.key($arr).'<br/>'; echo 'next()=>'.next($arr).'<br/>'; echo 'prev()=>'.prev($arr).'<br/>'; echo 'end()=>'.end($arr).'<br/>'; echo 'reset()=>'.reset($arr); ?>
PHP预定义数组
在全局范围内自动生效。包含了来自Web服务器,客户端,运行环境和用户输入等数据。
预定义数组名 | 说明 |
---|---|
$GLOBALS | 包含了全局变量的全局组合数组。变量的名称就是数组的键。 |
$_SERVER | 包含了诸如头信息,路径及脚本位置等信息的数组。 |
$_GET | 通过URL参数传递给当前脚本的变量的数组。 |
$_POST | 通过HTTP POST方法传递给当前脚本的变量的数组。 |
$_REQUEST | 默认情况下包含了GET,POST,COOKIE的数组。 |
$_FILES | 通过HTTP POST方法上传到当前脚本的项目的数组。 |
$_SESSION | 当前脚本可用SESSION变量的数组。 |
$_COOKIE | 通过HTTP COOKIE方法传递给当前脚本的变量的数组。 |
$_ENV | 通过环境方式传递给当前脚本的变量的数组。 |
相关处理函数
1.array_sum() <?php $arr=array(1,2,3,4,5,6,7,8,9); echo '$arr数组中所有值的和是:'.array_sum($arr); $arr=array(1,2,3,a,b,c,4); //字符串会被当做0处理 echo '$arr数组中所有值的和是:'.array_sum($arr); ?> 2.in_array() <?php $arr=array(1,2,3,a,b,c,4); if(in_array('a',$arr)) { echo '找到了你要找的值。'; } else { echo '没有找到你要找的值。'; } ?> 3.array_count_valuse() <?php $arr=array(11,2,31,11,2,6,39,2,2); print_r(array_count_values($arr)); $c=array_count_values($arr); echo '<br/>'; echo '数组$arr中数值2出现了'.$c[2].'次。<br/>'; echo '数组$arr中数值11出现了'.$c[11].'次。<br/>'; echo '数组$arr中数值31出现了'.$c[31].'次。<br/>'; ?>
相关文章推荐
- php 简单的邮箱验证 (个人学习笔记)
- java基础(个人学习笔记)D 数组
- 我的php学习笔记(四)数组的创建与应用
- PHP学习笔记【11】--PHP数组
- php学习笔记:第五节--php数组
- 【小白笔记】PHP学习之路 (18) --数组遍历、统计、计算
- 学习笔记 较全的php数组操作方法
- PHP 学习笔记(一):基础教程:语法,变量,函数,数组,超全局
- php学习笔记_5_数组及预定义变量(未完)
- php 学习笔记--数组篇(4)
- PHP学习笔记——数组下标的细节问题
- PHP学习笔记(一)数组
- PHP学习笔记——二维数组(数组的数组)的声明与应用
- php 学习笔记--数组篇(13)
- php学习笔记之数组遍历练习题1
- php学习笔记------[数组的常用函数]
- PHP学习笔记之数组操作//待完善V1.0
- PHP数组学习笔记
- PHP学习笔记5-PHP数组的介绍与应用
- php学习笔记 数组的常用函数