首页 > 编程语言 > 详细

2016/3/20 数组定义 数组遍历

时间:2016-03-20 18:00:34      阅读:202      评论:0      收藏:0      [点我收藏+]

一、数组定义

php数组与其他语言的数组的不同:

其他例如java语言 :同一种类型数据的集合。
php:数组可以存储任何类型的数据。同一个数组中可以放int类型也可以放string类型

①索引数组的定义:

1 $attr=array(1,2,3,4,"aa");
2  print_r($attr);
3 echo "<br/>";

显示效果:

技术分享

②关联数组定义:与索引数组不同之处:有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 };

遍历索引数组:

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($_COOIE);//存储状态
通过 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)

显示效果:

技术分享

 

2016/3/20 数组定义 数组遍历

原文:http://www.cnblogs.com/haodayikeshu/p/5298991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!