zoukankan      html  css  js  c++  java
  • 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>

    显示效果:

  • 相关阅读:
    Hdu 5396 Expression (区间Dp)
    Lightoj 1174
    codeforces 570 D. Tree Requests (dfs)
    codeforces 570 E. Pig and Palindromes (DP)
    Hdu 5385 The path
    Hdu 5384 Danganronpa (AC自动机模板)
    Hdu 5372 Segment Game (树状数组)
    Hdu 5379 Mahjong tree (dfs + 组合数)
    Hdu 5371 Hotaru's problem (manacher+枚举)
    Face The Right Way---hdu3276(开关问题)
  • 原文地址:https://www.cnblogs.com/haodayikeshu/p/5298991.html
Copyright © 2011-2022 走看看