本部分分三个模块记录PHP中数组的相关知识,第一个为数组的基础知识,第二个第三个为数组中强大的函数的相关介绍。
PHP中的数组功能十分强大,这得益于,PHP中预设的很多的关于数组的函数,在PHP中,将数组的功能进行扩展到数据结构,但是还是要从数组的创建和遍历着手
由于PHP是弱数据类型的编程语言,所以PHP中的数组变量可以存储任意多个,任意类型的数据
- 数组的分类
PHP中根据下标的不同将数组分为索引数组和关联数组
- 数组的定义
详情见代码中的注释内容
//通过直接赋值的方式声明数组
$contact[0]="45";
$contact[1]="5";
$contact[2]="55";
$contact[3]="9";
$contact[4]="89";
/*
当然索引也可以为空,即$contact[]="44";这样就会自动默认下标,如果是空和关联索引混合的话
那么就是在能默认的时候对上一个有数字的下标自动加1。
*/
//使用array()语言结构新建数组
$contact=array("id"=>"646","姓名"=>"小叶");
//也可以是:
$contact=array("646","小叶");
//多维数组的声明
$contact=array{
"北京"=array("");
"上海"=array("");
}
或者是:
$contact=array{
array("");
array("");
}
- 列表内容
数组的遍历
使用for语句循环遍历数组,其中可用count()函数获得数组的长度
使用foreach语句遍历数组
注意:foreach只能用于数组
<?php
header("Content-Type: text/html; charset=gb2312");
$contact = array(
11,
14 => "夏某",
"a公司",
"北京市",
14 => "0214545",
"xielebin@1563.com"
);
$num = 0;
/* foreach ($contact as $value) {
echo "在数组\$contact中第 $num 元素是:$value</br>";
$num++;
} */
foreach ($contact as $key=>$value) {
//使用这种方法可以获得数组中的键值,和键所对应的实际的值
echo "在数组\$contact中第 $key 元素是:$value</br>";
// $num++;
}
?>
联合使用list(),each(),whlie循环遍历数组
关于each():
<?php header("Content-Type: text/html; charset=gb2312"); $contact = array( 11, 14 => "夏某", "a公司", "北京市", 14 => "0214545", "xielebin@1563.com" ); $id=each($contact); print_r($id); //输出结果为: //Array ( [1] => 11 [value] => 11 [0] => 0 [key] => 0 ) /** * each返回的下标1,value,0,key是固定的,前面两个的值是数组的值,后面两个是数组的索引 * each返回第一个元素之后,会自动跳到下一个元素,直到内部指针越过了数组的末端,则each()返回FALSE * @var array $name */ $name=each($contact); print_r($name); //Array ( [1] => 0214545 [value] => 0214545 [0] => 14 [key] => 14 ) ?>
关于list():
<?php
header("Content-Type: text/html; charset=gb2312");
/*
* $info=array('coffee','brown','caffeine');
* list($drink,$color,$power)=$info;
* echo "$drink $color $power";
* list($drink,,$power)=$info;
* echo "</br>";
* echo "$drink $power";
*/
/**
* 通过上面的例子可以知道,list的作用是用一步操作给一组变量进行赋值,即把数组中的值赋给一些变量
* list仅能用于数组索引的数组并假定数字索引从0开始。
*/
$contact = array(
"id" => 1,
"姓名" => "夏某",
"公司" => "A公司",
"地址" => "合肥"
);
// list($key,$value)=each($contact);
// echo "$key=>$value";
//输出结果为:
//id=>1
//使用while和list的配对数组实现遍历
/* while (list($key,$value)=each($contact)){
echo "$key=>$value";
echo "</br>";
}
*/
//数组刚声明时,数组指针在数组中第一个元素位置
echo '第一个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
//其中的点号相当于Java中的用于连接字符串的+号
echo '第一个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
next($contact);
next($contact);
echo '第三个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
end($contact);
echo '最后一个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
prev($contact);
echo '倒数第二个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
reset($contact);
echo '又回到了第一个元素,第一个元素为:'.key(($contact)).'=>'.current($contact).'</br>';
/**
* 上面用到的是数组的内部指针控制控制函数遍历数组
* 有如下几个内建函数可以利用:
* current():取得目前指针位置的内容资料
* key():用来 读取目前指针所指向资料的索引值
* next():将数组中的内部指针移动到下一个单元
* prev():将数组中的内部指针倒回一位
* end():将数组中的内部指针指向最后一个元素
* reset():将目前指针无条件移至第一个索引位置
*/
//输出结果为:
/**
* 第一个元素为:id=>1
第一个元素为:id=>1
第三个元素为:公司=>A公司
最后一个元素为:地址=>合肥
倒数第二个元素为:公司=>A公司
又回到了第一个元素,第一个元素为:id=>1
*
*/
echo "</br></br>";
foreach ($_SERVER as $key=>$value){
echo '$_SERVER['.$key.']='.$value.'</br>';
}
?>
关于数组中的内部指针控制函数遍历数组的相关内容见上面代码