2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例
一、数组定义
php数组与其他语言的数组的不同:
其他例如java语言 :同一种类型数据的集合。
php:数组可以存储任何类型的数据。同一个数组中可以放int类型也可以放string类型
①索引数组的定义:
$attr=array(1,2,3,4,"aa");
print_r($attr);
echo "<br/>";
显示效果:

(上图中 1 是截取多了)
②关联数组定义:与索引数组不同之处:有key值
$attr = array('one' => 10,"two" => 100,"three" => 10000 );
print_r($attr);
echo @$attr[one];//单双引号都可以 @抑制错误
echo "<br/>";
显示效果:

注意:1,索引数组可以用索引数取。 2,关联数组需要用key值取。
二、数组遍历
①for循环遍历,针对索引数组,不能遍历关联数组。
//索引数组
$attr=array(1,2,3,4,"aa");
for ($i=0; $i<count($attr); $i++){
echo @$attr[$i]."<br>";
};
echo "<br/>";
显示效果:

//关联数组
$attr = array('one' => 10,"two" => 100,"three" => 10000 );
for ($i=0; $i<count($attr); $i++){
echo @$attr[$i]."<br>";
};
echo "<br/>";
显示效果:为空白
② php中foreach遍历
java中foreach遍历:
int arr[]={1,2,3};
for(int x:arr){ //数据类型 新定义的数组名 :要遍历的数组名
System.out.println(x);
};
php中遍历索引数组:
$attr=array(1,2,3,4,"aa");
foreach ($attr as $value) {
echo $value."<br>";
};
效果:

遍历关联数组
$attr = array('one' => 10,"two" => 100,"three" => 10000 );
foreach ($attr as $value) {
echo $value."<br>";
};
效果:

③each()函数,顺序显示,第一次取第[0]个依次向下取,将该元素以数组的形式返回;
如果超出,则不会显示
$attr = array('one' => 10,"two" => 100,"three" => 10000 );
print_r (each($attr));
echo "<br/>";
print_r (each($attr));
echo "<br/>";
print_r (each($attr));
echo "<br/>";
echo "----------------<br>";
//将指针复位,指回第一个元素
reset($attr);
print_r (each($attr));
echo "<br/>";
print_r (each($attr));
echo "<br/>";
print_r (each($attr));
echo "<br/>";

④list()函数 只能取索引数组
$attr=array(1,2,3,4,"aa");
list($a,$b,$c,$d,$e)=$attr;
echo $a."<br>";
echo $b."<br>";
echo $c."<br>";
echo $d."<br>";
echo $e."<br>";
echo "<br/>";
echo "<br/>";
//只取最后一个元素
list(,,,,$e)=$attr;
echo $e;
echo "<br/>";

⑤ 用each()和list()函数遍历数组,索引数组和关联数组联合使用
$attr=array(1,2,3,4,"aa");
list($key,$value)=each($attr);
echo $key."=>".$value."<br>";
list($key,$value)=each($attr);
echo $key."=>".$value."<br>";
list($key,$value)=each($attr);
echo $key."=>".$value."<br>";
list($key,$value)=each($attr);
echo $key."=>".$value."<br>";
list($key,$value)=each($attr);
echo $key."=>".$value."<br>";
//超出数组的范围,显示 "=>"" 其实为空
list($key,$value)=each($attr);
echo $key."=>".$value."<br>"
效果:

⑥while循环输出
$attr=array(1,2,3,4,"aa");
while (list($key,$value)=each($attr)) {
echo $key."=>".$value."<br>";
};
效果:

⑦current 指针 key 值
current取当前指针指向的内容 即value;
key 取key的索引值
$attr=array(1,2,3,4,"aa"); echo current($attr)."<br>";
echo key($attr)."<br>";
echo current($attr)."<br>";
echo key($attr)."<br>";
echo current($attr)."<br>";
echo key($attr)."<br>";
echo current($attr)."<br>";
echo key($attr)."<br>";
echo current($attr)."<br>";
echo key($attr)."<br>";
显示效果:只有最前一组的数值value和key值

⑧current($attr) key($attr)
next($attr), prev($attr), end($attr), reset($attr) 向下移动 向上移动 指向最后一个 指针复位
$attr=array(1,2,3,4,"aa");
echo current($attr)."<br>";
echo key($attr)."<br>"; next($attr);//指针向下移动
echo current($attr);
echo key($attr); prev($attr);//指针向上移动
echo current($attr)."<br>";
echo key($attr)."<br>"; end($attr);//指针指向最后一个
echo current($attr)."<br>";
echo key($attr)."<br>"; reset($attr);//指针复位
echo current($attr)."<br>";
echo key($attr)."<br>";
显示效果:

⑨next($attr) while循环 do...while循环
while (next($attr)) { //直接从下一个开始 也就是跳过[0] 直接到[1]
echo key($attr)." ";
echo current($attr);
echo "<br/>";
};
如何避免跳过 用do...while
显示效果:

do{ //不管条件满足与否,先运行一次。
echo key($attr)." ";
echo current($attr);
echo "<br/>";
}
while (next($attr)) ;
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 方式传递给当前脚本的变量的数组
⑪数组中元素--有无、反转、个数、去重、删除某个索引即值、重新排列索引、合并数组、追加元素
$at=array(1,2,1,4,5,6,7,8);
//判断这个值是否在这个数组中
echo in_array(2, $at);
有的话判断:为1 无的话:为空 什么都不显示
$at=array(1,2,1,4,5,6,7,8);
//反转数组 反转顺序
print_r(array_reverse($at));
显示效果:

$at=array(1,2,1,4,5,6,7,8);
//返回数组里面元素的个数
echo count($at);
显示效果:

$at=array(1,2,1,4,5,6,7,8);
//对数组里面的值去重
print_r(array_unique($at));
显示效果: 去除了[2]=>1 与 [0]=>1 重复

//删除某一个索引号的数值
1 $at=array(1,2,1,4,5,6,7,8);
unset($at[1]);
print_r($at);
显示效果:删除[1] 索引数和值

接上例
1 //重新从0开始,排列索引值
$a=array_values($at);
print_r($a);
显示效果:

$at=array(1,2,1,4,5,6,7,8);
$ae=array(11,12,13);
/合并数组
$aaa=array_merge($at,$ae);
print_r($aaa);
显示效果:

//在数组中追加元素
1 $ae=array(11,12,13);
array_push($ae,"cccc");
print_r($ae)
显示效果:

⑫制表实例
$ar=array(
array("P1","张","女","汉","1988-2-3"),
array("p2","李","男","回","1988-2-13"),
array("p3","王","男","回","1988-12-13")
);
echo"<table width='100%' border='1'cellpadding='0'cellspacing='0'>"; echo "<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td></tr>";
for ($i=0; $i <count($ar) ; $i++) {
echo"<tr>";
// 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>"; //如果这样设置 只能有三组数据 for($j=0;$j<count($ar[$i]);$j++)//可以通过for循环随意插入多组数组
{
echo"<td>{$ar[$i][$j]}</td>";
};
echo"</tr>";
};
显示效果:

下拉菜单 提交取值①
<select id="sel">
<?php
$aa1=array(
array("001","汉族"),
array("002","回族"),
array("003","苗族"),
array("004","壮族"),
array("005","满族")
);
for ($i=0; $i < count($aa1); $i++) {
echo "<option value='{$aa1[$i][0]}'>{$aa1[$i][1]}</option>";
}
?> </select>
<input type="button" id="btn" value="取值" onclick="show()" />
<script type="text/javascript">
function show(){
var ss=document.getElementById("sel");
alert(ss.value);
}; </script>
显示效果:

下拉菜单 提交取值②
提交到其他页:用到<form action="XXX.php method="get"></form> 表单验证
<form action="text4.php" method="get">
<select name="nation" id="sel">
<!-- //如果提交到其他页面,select中必须加name -->
<?php
$aa1=array(
array("001","汉族"),
array("002","回族"),
array("003","苗族"),
array("004","壮族"),
array("005","满族")
);
for ($i=0; $i < count($aa1); $i++) {
echo "<option value='{$aa1[$i][0]}'>{$aa1[$i][1]}</option>";
} //value 值一般是主键值
?> </select>
<input type="submit" id="btn" value="取值" />
</form>
显示效果:


2016/3/20 数组定义 数组遍历 超全局数组 数组元素设置(in_array() 、array_reverse()、count()、array_unique()、unset()、array_values、array_merge、array_push) 列表实例的更多相关文章
- 集合 数组 定义 转换 遍历 Arrays API MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- js数组定义和方法 (包含ES5新增数组方法)
数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 ...
- “请不要直接访问超全局$_GET数组”
下载了一个名为NetBeans的IDE开发PHP程序,当我输入常用的的$name = $_GET['name'];时却收到警告:请不要直接访问超全局$_GET数组 请改用某些过滤函数(例如filter ...
- 数组(定义、遍历、冒泡排序、合并和Join 方法)
一.数组的定义 1.理解:数组指一组数据,有序的数据,可以一次性存储多个数据,将多个元素(通常统一类型)按照一定的顺序排列放到一个集合里 2.通过构造函数创建数组: var 数组名=new Arrar ...
- linux shell编程中的数组定义、遍历
代码如下: 数组定义法1: arr=( ) # 注意是用空格分开,不是逗号!! 数组定义法2: array array[]="a" array[]="b" ar ...
- Codeforces Round #283 (Div. 2) A. Minimum Difficulty【一个数组定义困难值是两个相邻元素之间差的最大值。 给一个数组,可以去掉任意一个元素,问剩余数列的困难值的最小值是多少】
A. Minimum Difficulty time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- php学习笔记 [预定义数组(超全局数组)]
<?php 预定义数组: * 自动全局变量---超全局数组 * * 1.包含了来自WEB服务器,客户端,运行环境和用户输入的数据 * 2.这些数组比较特别 * 3.全局范围内自动生效,都可以直 ...
- php数组声明、遍历、数组全局变量使用小结
数组的本质:管理和操作一组变量,成批处理,下面为大家介绍下数组的分类.数组的分类及使用说明,感兴趣的朋友可以了解下哈 php教程:数组声明,遍历,数组全局变量 <? /* * 一.数组的概 ...
- C语言数组:C语言数组定义、二维数组、动态数组、字符串数组
1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...
随机推荐
- mysql 5.7 windows zip安装
mysql 官网下载windows zip 安装包 并解压 (D:wampmysql-56-winx64) 添加path D:wampmysql-5722-winx64bin 创建data目录 D:\ ...
- 《算法导论》— Chapter 9 中位数和顺序统计学
序 在算法导论的第二部分主要探讨了排序和顺序统计学,第六章~第八章讨论了堆排序.快速排序以及三种线性排序算法.该部分的最后一个章节,将讨论顺序统计方面的知识. 在一个由n个元素组成的集合中,第i个顺序 ...
- STM32开发环境--使用MDK建立一个工程
STM32开发环境--使用MDK建立一个工程 该工程模版是基于库函数基础制作而成,其中有借鉴相关资料.虽然工程模版一旦建立,以后任何项目只需套用即可,但考虑到长时间不使用,在将来某天可能会突然用到,再 ...
- POJ 2342 Anniversary party (树形DP入门)
题意: 给定一个上下属的关系树, 每个人有一个活跃值, 现在要参加一个派对, 每个人都不会和自己的上属参加派对(上属参加了,下属就不能参加了), 求参加派对的最大活跃值 分析: 枚举每个节点取与不取得 ...
- kafka 理论学习
http://blog.csdn.net/paul342/article/details/50479491 kafka基本知识.
- Leetcode 319.灯泡开关
灯泡开关 初始时有 n 个灯泡关闭.第 1 轮,你打开所有的灯泡.第 2 轮,每两个灯泡你关闭一次.第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换 ...
- laravel groupby分组问题。
laravel 5.7使用groupBy分组查询时会提示一个错误,但是sql可以执行. 因为:mysql从5.7以后,默认开启了严格模式. 解决方法:将/config/database.php 中:关 ...
- CodeForces230A
题目大意: 一个打恐龙的游戏,有初始体力s,和恐龙n只,然后输入n只恐龙的体力xi,和击杀它得到的奖励体力yi,只有自身体力大于恐龙体力时才能进行击杀,击杀恐龙的顺序可以不定 这题运用到了贪心的思想, ...
- 从零开始写STL - 智能指针
从零开始写STL - 智能指针 智能指针的分类及其特点: scoped_ptr:初始化获得资源控制权,在作用域结束释放资源 shared_ptr: 引用计数来控制共享资源,最后一个资源的引用被释放的时 ...
- Java fail-fast 与 fail-safe 机制对比
关于fail-fast参考这篇文章: 从 modCount 看 java集合 fail-fast 机制 一.fail-safe概述以及与fail-fast区别 首先 fail-safe 并不属于J ...