2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例
一、数组定义
php数组与其他语言的数组的不同:
其他例如java语言 :同一种类型数据的集合。
php:数组可以存储任何类型的数据。同一个数组中可以放int类型也可以放string类型
①索引数组的定义:
1 $attr=array(1,2,3,4,"aa"); 2 print_r($attr); 3 echo "<br/>";
显示效果:
(上图中 1 是截取多了)
②关联数组定义:与索引数组不同之处:有key值
1 $attr = array('one' => 10,"two" => 100,"three" => 10000 ); 2 print_r($attr); 3 echo @$attr[one];//单双引号都可以 @抑制错误 4 echo "<br/>";
显示效果:
注意:1,索引数组可以用索引数取。 2,关联数组需要用key值取。
二、数组遍历
①for循环遍历,针对索引数组,不能遍历关联数组。
//索引数组
1 $attr=array(1,2,3,4,"aa"); 2 for ($i=0; $i<count($attr); $i++){ 3 echo @$attr[$i]."<br>"; 4 }; 5 echo "<br/>";
显示效果:
//关联数组
1 $attr = array('one' => 10,"two" => 100,"three" => 10000 ); 2 for ($i=0; $i<count($attr); $i++){ 3 echo @$attr[$i]."<br>"; 4 }; 5 echo "<br/>";
显示效果:为空白
② php中foreach遍历
java中foreach遍历:
1 int arr[]={1,2,3}; 2 for(int x:arr){ //数据类型 新定义的数组名 :要遍历的数组名 3 System.out.println(x); 4 };
php中遍历索引数组:
1 $attr=array(1,2,3,4,"aa"); 2 foreach ($attr as $value) { 3 echo $value."<br>"; 4 };
效果:
遍历关联数组
1 $attr = array('one' => 10,"two" => 100,"three" => 10000 ); 2 3 foreach ($attr as $value) { 4 echo $value."<br>"; 5 };
效果:
③each()函数,顺序显示,第一次取第[0]个依次向下取,将该元素以数组的形式返回;
如果超出,则不会显示
1 $attr = array('one' => 10,"two" => 100,"three" => 10000 ); 2 print_r (each($attr)); 3 echo "<br/>"; 4 print_r (each($attr)); 5 echo "<br/>"; 6 print_r (each($attr)); 7 echo "<br/>"; 8 echo "----------------<br>"; 9 //将指针复位,指回第一个元素 10 reset($attr); 11 print_r (each($attr)); 12 echo "<br/>"; 13 print_r (each($attr)); 14 echo "<br/>"; 15 print_r (each($attr)); 16 echo "<br/>";
④list()函数 只能取索引数组
1 $attr=array(1,2,3,4,"aa"); 2 list($a,$b,$c,$d,$e)=$attr; 3 echo $a."<br>"; 4 echo $b."<br>"; 5 echo $c."<br>"; 6 echo $d."<br>"; 7 echo $e."<br>"; 8 echo "<br/>"; 9 echo "<br/>"; 10 //只取最后一个元素 11 list(,,,,$e)=$attr; 12 echo $e; 13 echo "<br/>";
⑤ 用each()和list()函数遍历数组,索引数组和关联数组联合使用
1 $attr=array(1,2,3,4,"aa"); 2 list($key,$value)=each($attr); 3 echo $key."=>".$value."<br>"; 4 list($key,$value)=each($attr); 5 echo $key."=>".$value."<br>"; 6 list($key,$value)=each($attr); 7 echo $key."=>".$value."<br>"; 8 list($key,$value)=each($attr); 9 echo $key."=>".$value."<br>"; 10 list($key,$value)=each($attr); 11 echo $key."=>".$value."<br>"; 12 //超出数组的范围,显示 "=>"" 其实为空 13 list($key,$value)=each($attr); 14 echo $key."=>".$value."<br>"
效果:
⑥while循环输出
1 $attr=array(1,2,3,4,"aa"); 2 while (list($key,$value)=each($attr)) { 3 echo $key."=>".$value."<br>"; 4 };
效果:
⑦current 指针 key 值
current取当前指针指向的内容 即value;
key 取key的索引值
1 $attr=array(1,2,3,4,"aa"); 2 3 echo current($attr)."<br>"; 4 echo key($attr)."<br>"; 5 echo current($attr)."<br>"; 6 echo key($attr)."<br>"; 7 echo current($attr)."<br>"; 8 echo key($attr)."<br>"; 9 echo current($attr)."<br>"; 10 echo key($attr)."<br>"; 11 echo current($attr)."<br>"; 12 echo key($attr)."<br>";
显示效果:只有最前一组的数值value和key值
⑧current($attr) key($attr)
next($attr), prev($attr), end($attr), reset($attr) 向下移动 向上移动 指向最后一个 指针复位
1 $attr=array(1,2,3,4,"aa"); 2 echo current($attr)."<br>"; 3 echo key($attr)."<br>"; 4 5 next($attr);//指针向下移动 6 echo current($attr); 7 echo key($attr); 8 9 prev($attr);//指针向上移动 10 echo current($attr)."<br>"; 11 echo key($attr)."<br>"; 12 13 end($attr);//指针指向最后一个 14 echo current($attr)."<br>"; 15 echo key($attr)."<br>"; 16 17 reset($attr);//指针复位 18 echo current($attr)."<br>"; 19 echo key($attr)."<br>";
显示效果:
⑨next($attr) while循环 do...while循环
1 while (next($attr)) { //直接从下一个开始 也就是跳过[0] 直接到[1] 2 echo key($attr)." "; 3 echo current($attr); 4 echo "<br/>"; 5 };
如何避免跳过 用do...while
显示效果:
1 do{ //不管条件满足与否,先运行一次。 2 echo key($attr)." "; 3 echo current($attr); 4 echo "<br/>"; 5 } 6 while (next($attr)) ; 7 echo "<br/>";
显示效果:
⑩预定义数组(超全局数组)
1,print_r($_SERVER);
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
2,print_r($_ENV);//环境变量
这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以不可能有一份确定的列表
3,print_r($_GET);//提交有长度限制
通过 URL 参数传递给当前脚本的变量的数组。
4,print_r($_POST);//没有长度限制
通过 HTTP POST 方法传递给当前脚本的变量的数组。
5,print_r($_REQUEST);//与POST相同
默认情况下包含了 $_GET ,$_POST 和 $_COOKIE 的数组。
6,print_r($_FILES);
通过 HTTP POST 方式上传到当前脚本的项目的 数组 。
7,print_r($_SESSION);//会话控制 保存登陆信息
长时间没有操作页面,再次使用要求重新登陆 存储状态
8,print_r($_COOKIE);//存储状态
通过 HTTP Cookies 方式传递给当前脚本的变量的数组
⑪数组中元素--有无、反转、个数、去重、删除某个索引即值、重新排列索引、合并数组、追加元素
1 $at=array(1,2,1,4,5,6,7,8); 2 //判断这个值是否在这个数组中 3 echo in_array(2, $at);
有的话判断:为1 无的话:为空 什么都不显示
$at=array(1,2,1,4,5,6,7,8);
1 //反转数组 反转顺序 2 print_r(array_reverse($at));
显示效果:
1 $at=array(1,2,1,4,5,6,7,8); 2 //返回数组里面元素的个数 3 echo count($at);
显示效果:
1 $at=array(1,2,1,4,5,6,7,8); 2 //对数组里面的值去重 3 print_r(array_unique($at));
显示效果: 去除了[2]=>1 与 [0]=>1 重复
//删除某一个索引号的数值
1 $at=array(1,2,1,4,5,6,7,8); 2 unset($at[1]); 3 print_r($at);
显示效果:删除[1] 索引数和值
接上例
1 //重新从0开始,排列索引值 2 $a=array_values($at); 3 print_r($a);
显示效果:
1 $at=array(1,2,1,4,5,6,7,8); 2 $ae=array(11,12,13); 3 /合并数组 4 $aaa=array_merge($at,$ae); 5 print_r($aaa);
显示效果:
//在数组中追加元素
1 $ae=array(11,12,13); 2 array_push($ae,"cccc"); 3 print_r($ae)
显示效果:
⑫制表实例
1 $ar=array( 2 array("P1","张","女","汉","1988-2-3"), 3 array("p2","李","男","回","1988-2-13"), 4 array("p3","王","男","回","1988-12-13") 5 ); 6 echo"<table width='100%' border='1'cellpadding='0'cellspacing='0'>"; 7 8 echo "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td></tr>"; 9 for ($i=0; $i <count($ar) ; $i++) { 10 echo"<tr>"; 11 // echo "<td>{$ar[$i][0]}</td><td>{$ar[$i][1]}</td><td>{$ar[$i][2]}</td><td>{$ar[$i][3]}</td><td>{$ar[$i][4]}</td>"; //如果这样设置 只能有三组数据 12 13 for($j=0;$j<count($ar[$i]);$j++)//可以通过for循环随意插入多组数组 14 { 15 echo"<td>{$ar[$i][$j]}</td>"; 16 }; 17 echo"</tr>"; 18 };
显示效果:
下拉菜单 提交取值①
1 <select id="sel"> 2 <?php 3 $aa1=array( 4 array("001","汉族"), 5 array("002","回族"), 6 array("003","苗族"), 7 array("004","壮族"), 8 array("005","满族") 9 ); 10 for ($i=0; $i < count($aa1); $i++) { 11 echo "<option value='{$aa1[$i][0]}'>{$aa1[$i][1]}</option>"; 12 } 13 ?> 14 15 </select> 16 <input type="button" id="btn" value="取值" onclick="show()" /> 17 <script type="text/javascript"> 18 function show(){ 19 var ss=document.getElementById("sel"); 20 alert(ss.value); 21 }; 22 23 </script>
显示效果:
下拉菜单 提交取值②
提交到其他页:用到<form action="XXX.php method="get"></form> 表单验证
1 <form action="text4.php" method="get"> 2 <select name="nation" id="sel"> 3 <!-- //如果提交到其他页面,select中必须加name --> 4 <?php 5 $aa1=array( 6 array("001","汉族"), 7 array("002","回族"), 8 array("003","苗族"), 9 array("004","壮族"), 10 array("005","满族") 11 ); 12 for ($i=0; $i < count($aa1); $i++) { 13 echo "<option value='{$aa1[$i][0]}'>{$aa1[$i][1]}</option>"; 14 } //value 值一般是主键值 15 ?> 16 17 </select> 18 <input type="submit" id="btn" value="取值" /> 19 </form>
显示效果: