用户名:  密码:   
您当前的位置:首页 > 网页设计 >  PHP > 

第7讲 组声明,索引与关联组,输出每个元素,遍历foreach与list,合并组array_merge,串转组explode组转串implode,计数count,值升排sort降排rsort,键排ksort

上次修改时间: 2016-01-21 22:03:29      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\PHP相关\      下一页

组声明,索引与关联组,输出每个元素,遍历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]."&nbsp;&nbsp;";
 }
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]."&nbsp;&nbsp;";
 }
4) 用ksort()函数按Key(关键字)排序,语法:int kssort(array array [,int sort_flags])
 $array = array('苹果'=>5,'香蕉'=>6,'荔枝'=>7);
 ksort($array);  //按关键字排序 从a-z
 print_r($array);