

组声明,索引与关联组,输出每个元素,遍历foreach与list,合并组array_merge,串转组explode组转串implode,计数count,值升排sort降排rsort,键排ksort
7.1 了解数组 ,发明数组是为了把一组有序的数据当成一个整体来操作
1) 数组是一组有序的变量或数据的集合,每个变量或数据是一个元素,每个元素间用标识符区分,标识符也称为键或下标
2) 数组中每个实体包含键或值,通过键值来获取相应数组元素,键可以是数值键或关联键。
3) 数组和变量的区别是,变量是存单个值的容器,数组是存多个值的容器
7.2 声明数组
1) 有两种方式声明数组,一种是用array()函数,另一种是不声明直接赋值,类似变量不声明用一样
2) 用array()函数声明 语法:array array ([mixed...])
//可选参数mixed写法:key=>value,多个mixed参数间用逗号分开,这里的key可以是数字或字符串
//key=>value 这里的key是下标和value是数组元素值,它们之间用=>隔开,多个元素间用逗号隔开
3)用array()函数定义数组也可以直接给元素值,而不给键值,例:
$array = array("asp","php","jsp");
print_r($array);
结果为:array([0]=>asp[1]=>php[2]=>jsp); //输出时元素间没有逗号
7.3 数组的类型,包括索引数组和联合数组,区别在于用数字或字符为键
1) 数字索引数组
下标由从0开始的数字组成,因为默认索引值从0开始,所以能表示元素在数组中的位置
PHP会自动为索引数组键名赋一整数值,默认从0开始自动增加,也可以指定开始位置
2) 关联数组:键名或下标由数字和字符混合组成,只要键名为1个字符不是数字就叫关联数组
$newarray = array ("first"=>1,"second"=>2,"third"=>3);
echo $newarray["second"];
$newarray["third"]=3;
echo $newarray["third"];
7.4 输出数组
1) 用echo和print语句可以输出数组中单个元素
2) 用print_r()函数可以输出整个数组,语法:bool print_r(mixed expression)
//该函数用以按一定顺序依次输出数组中每个元素的键和值,
//该函数也可以输出普通数字或字符串,如参数expression为普通的整形,字符型或实型变量就输出变量本身
$array=array(1=>"PHP5",2=>"从入门",3=>"到精通");
print_r(array)
7.5 数组的构造 一维与二维数组
一维数组:数组的元素是变量,只保存一列内容。 声明:类型说明符,数组名[常量表达式];
二维数组:数组的元素是一维数组,
$str = array (
"书籍”=>array("文学","历史","地理"),
“”=>array("m"=>"足球","n"=>"篮球"),
“”=>array("橙子",8=>"葡萄","苹果") );
print_r ($str);
7.6 遍历数组 用foreach结构或list()函数
1) 遍历的作用:当你要知道数组的每个元素中有没有符合你的要求的记录时,就要遍历数组了
2) 用foreach结构遍历:它是操作数组的备份,而不是操作数组
3) 用list函数遍历:仅能用于遍历数字索引数组,特点是把数组中的值赋给一些变量,它也是语言结构,不是真正的的函数
语法:void list(mixed...) //参数mixed为被赋值的变量名称。未理解。。。。。。。。。。
例1:
$url = array('编程词典网'=>'www.mrbccd.com',
'编程体验网'=>'www.bcty365.com',
'编程资源网'=>'www.bc110.com');
foreach ( $url as $link) {
echo $link.'<br><br>';
}
例2:
while(list($name,$value)=each($_POST)){
if($name!="submit"){
echo "$name=$value<br>";
}
}
7.7 合并数组 用array_merge()函数
1) 把一个数组追加到另一个数组,主要用array_merge()函数,
语法:array array_merge(array array1,array array2[,array...]);
//数组中有相同的字符串键名,后面的键名的值覆盖前面键名的值
//数组中有相同的数字键名,后面的值不覆盖,而是附加
$str1 = array("图书"=>"PHP函数参考大全");
$str2 = array("网络类","定价","图书"=>"PHP程序开发范例宝典","PHP"=>"95","元");
$result = array_merge($str1,$str2);
print_r($result);
输出结果:Array([图书]=>PHP程序开发范例宝典[0]=>网络类[1]=>定价[PHP]=>95[2]=>元) //输出结果自动加数字下标
7.8 字符串与数组的转换, 字符串转数组用explode(),数组转字符串用implode()
1) 用explode()函数将字符串转换成数组
语法:array explode(string separator, string string,[int limit])
//用separator字串把string字符串分割成多个元素,分隔符不输出
//可参数limit用以设置返回元素的个数,剩余的部分包含在最后那个元素中,如limit为负,就返回倒数limit个元素外的所有元素
//如果separator为空,函数返回false,如separator在string找不到,把把sgring作为数组唯一元素返回
例:把checkbox项以*隔开输入到content框中,最后输出checkbox
if($_POST[Submit]!=""){
$content=$_POST[content];
$data=explode("*",$content];
while(list($name,$value)=each($data)){
echo '<input type="checkbox" name="checkbox" value="checkbox">';
echo $value."\n";
}
}
2) 用implode()函数将数组所有元素组合成一个字串返回
语法:string implode(string glue,array pieces)
//glue为要传入的分隔符,pieces为要合并的数组名,在新字符串中每个元素会用分隔符隔开
例2:
$str=array(明日,编程词典,网址,'www.mrbccd.com',服务电话,"0431-84972266");
echo implode(" ",$str); //以空格做分隔符将数组中的元素组成一个字符串
7.9 统计数组元素个数
用count()函数,语法:int count(mixed array [,int mode])
//array为要统计的数组,可选参数mode默认值为0,当为1时将递归地的数组计数,主要用以计算多维数组
数组名,安递归对数组计数,mode 默认是0
例子:
$array = array("php" => array("PHP函数参考大全","PHP程序开妈范例宝典","PHP数据库系统开发完全手册"),
"asp" => array("ASP经验技巧宝典") ); //声明一个二维数组,因为元素是一维数组
echo count($array,COUNT_RECURSIVE); //递归统计数组元素的个数
——这里个数没搞清楚怎么统计的
7.10 数组的排序(给值排而不给键),升序(从小到大)用sort,降序(从大到小)用rsort,按键排用ksort
1) 默认数组的元素是无规律存储的,为利于查找和定位,需要先排序,排的是值而不是键
2) 用sort()函数升序排 ,语法:bool sort(array &array[,int sort_flags])
//&array为要进行排序的数组
//sort_flags可选参数有3个值,指定按什么排,SORT_NUMBERIC把元素作数字比较排,SORT_REGULAR按相应ASCII值排,SORT_STRING元素按正常排
$array=array(5,26,37,18,9,42,88,66);
$array1=sort($array);
for($i=0;$i<count($array);$i++){
echo $array{$i]." ";
}
3) 用rsort()函数降排,语法:void rsort(array array[,int soft_flags]); //参数使用说明同sort()函数
$array = array ("a"=>"asp","p"=>"php","j"=>"jsp");
$array1=rsort($array); //降序排 这里从Z到A
for($i=0;$i<count($array);$i++){
echo $array[$i]." ";
}
4) 用ksort()函数按Key(关键字)排序,语法:int kssort(array array [,int sort_flags])
$array = array('苹果'=>5,'香蕉'=>6,'荔枝'=>7);
ksort($array); //按关键字排序 从a-z
print_r($array);