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_ 指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值。例如:
$myArray=array(\"1\"=>\"val1\",\"2\"=>\"val2\",\"3\"=>\"val3\");
foreach($myArray as $val) {
echo $val.\"<br />\";
}
执行结果:
val1
val2
val3
再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值。
先看一个简单的一维数组:
$myArray=array(\"1\"=>\"val1\",\"2\"=>\"val2\",\"3\"=>\"val3\");
foreach($myArray as $key=>$val) {
echo $key.\"=>\".$val.\"<br />\";
}
执行结果:
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 \"<ul>\";
foreach($myArray as $key=>$val) {
echo \"<li>\".$key.\"</li>\";
//判断$val的值是否是一个数组,如果是,则进入下层遍历
if (is_array($val)) {
echo \"<ul>\";
foreach($val as $key=>$val) {
echo \"<li>\".$key.\"=>\".$val.\"</li>\";
}
echo \"</ul>\";
}
}
echo \"</ul>\";
<ul> 和 <li>是 标签,作用是显示个实心小圆点和空心小圆点。 由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。
再通过一个实例解惑:
$a = array(\"1\"=>\"语文\",\"2\"=>\"数学\",\"3\"=>\"英语\");
$b = array(\"1\"=>\"95\",\"2\"=>\"99\",\"3\"=>\"92\");
foreach($a as $key=>$value){
echo $value;
echo $b[$key].\"<br>\";
}
执行结果:
语文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只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。
继续阅读与本文标签相同的文章
商用数据库之死:Oracle 面临困境
Android多子视图嵌套通用解决方案
-
这间屋子没有电话
2026-05-14栏目: 教程
-
曾经扬言“我要摧毁人类”的机器人,在拥有公民身份后,近况如何?
2026-05-14栏目: 教程
-
中国客车“抢眼”世界客车博览会
2026-05-14栏目: 教程
-
充分利用系统磁盘空间,Windows 7操作系统如何创建压缩文件夹
2026-05-14栏目: 教程
-
iPhone11系列性能测试:碾压华为麒麟990,性能超越它两倍!
2026-05-14栏目: 教程
