您的位置:首页 > 编程语言 > PHP开发

个人PHP学习笔记(四)--数组

2015-05-18 12:40 405 查看

目录

基本语法

语句结构

函数

数组

面向对象的程序设计

字符串

正则表达式

常用函数

文件系统

图形图像处理

MySQL数据库

Cookie&Session

错误和异常

数组

概述

PHP的弱类型性质,可以存储的内容是多种类型,不需要担心数据类型的问题。

数组的长度可以动态增长的。

数组的本质就是储存,管理和操作一组变量。数组储存的就是一系列变量值。

姓名性别年龄公司电子邮件
Marshall20Abstergomarshall@exp.com
John22Bobojohn@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');
?>
//使用数组


索引数组

姓名性别年龄公司电子邮件
Marshall20Abstergomarshall@exp.com
01234
默认情况下索引是不需要定义的。

默认数组使用从0开始的数字依次递增来对应每个元素。

关联数组

姓名性别年龄公司电子邮件
Marshall20Abstergomarshall@exp.com
namesexagecomemail
索引不再是数字,可以使用有意义的字符串作为元素的索引

初始化数组

直接赋值初始化索引数组

$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