foreach有两种用法:
一、
foreach(arr_name as $value)
{
statement;
}
解析:arr_name是要遍历的数组名。每次循环,arr_name数组当前元素的值都被赋给$value,而且数组内部下标也要下移一个,也就是说下次循环得到的将是下一个元素
二、
foreach(arr_name as $key => $value)
{
statement;
}
解析:与第一个的不同是,这个除了吧当前元素的值赋给$value外,每次循环当前元素的键值也会被赋给$key , 键值可能是下标或字符串。如row[0]=1中的"0”,row[id]="001"中的"id”.其中0与id都是键值
先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值。例如:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $val) { echo $val." "; } 执行结果: val1 val2 val3 |
再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值。
先看一个简单的一维数组:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $key=>$val) { echo $key."=>".$val." "; } 执行结果: 1=>val1 2=>val2 3=>val3 |
接下来我们再来看一个复杂一点的二维数组遍历,程序如下:
代码如下 | 复制代码 |
$myArray=array( "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"), "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"), "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33") ); echo "
foreach($myArray as $key=>$val) { echo " //判断$val的值是否是一个数组,如果是,则进入下层遍历 if (is_array($val)) { echo "
foreach($val as $key=>$val) { echo " } echo " } } echo " |
执行结果:
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); $b = array("1"=>"95","2"=>"99","3"=>"92"); foreach($a as $key=>$value){ echo $value; echo $b[$key]." "; } 执行结果: 语文95 数学99 英语92 |
问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]? why?
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); 上面这个和下面这个是完全一样的 $a[1]="语文"; $a[2]="数学"; $a[3]="英语"; 我们输出上面的数组元素是怎么输出的呢? 肯定是 echo $a[1]; echo $a[2]; echo $a[3]; |
对不对?简单说foreach 它的格式是这样的
foreach(数组名 as 下标=>值)
下标也就是上面的$a[1],这里的1就是数组的下标! 到这你应该明白了,为什么是$a[$key]这样输出。
好了到这里关于php foreach就介绍完了,foreach只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。
月影别墅游戏 安卓版v2.3.24
月影别墅是款女性向乙女恋爱剧情文字手游,故事背景是玩家穿越到
爆炒江湖九游版 最新版v1.42
爆炒江湖4399服是一款Q版的餐厅经营模拟游戏,玩家目前所看
欧洲卡车模拟器3内置作弊菜单 安卓版v0.2
欧洲卡车模拟器3内置菜单是一个驾驶模拟类手游,不少玩家可能在
汽车公司大亨无限研究点 v1.9.6
汽车公司大亨无限金币版是一款非常经典的模拟经营类手游,在这里
爆炒江湖果盘版 安卓版v1.42
爆炒江湖果盘版是一款中华美食模拟经营手游的渠道服版本,可能有