PHP 中的 foreach 用于循环输出数组或者对象中的内容。
foreach开始执行时,指针自动指到数组的第一个单元格;
每次遍历时,当前指针所指向的值赋给$value,并且数组中指针自动移到下一位。
(注:为了便于查看,此文数组的输出格式均为“查看网页源代码”之后的格式)
有两种语法:
1.foreach($arr as $value)
eg:
<?php
$arr = array('a','b','c');
foreach($arr as $value) {
echo "value is ".$value."<br>";
}
var_dump($arr);
?>
输出:
value is a
value is b
value is c
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
2.foreach($arr as $key=>$value)
eg:
<?php
$arr = array('a','b','c');
foreach($arr as $key=>$value) {
echo "key is ".$key.",value is ".$value.",\$arr[$key] is ".$arr[$key]."<br>";
}
var_dump($arr);
?>
输出:
key is 0,value is a,$arr[0] is a
key is 1,value is b,$arr[1] is b
key is 2,value is c,$arr[2] is c
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
eg:
<?php
$arr = array(
array('a','b','c'),
array('e','f','g')
);
var_dump($arr);
$arr[0][3] = 'm';
$arr[1][3] = 'n';
var_dump($arr);
?>
输出:
array(2) {
[0]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
[1]=>
array(3) {
[0]=>
string(1) "e"
[1]=>
string(1) "f"
[2]=>
string(1) "g"
}
}
array(2) {
[0]=>
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "m"
}
[1]=>
array(4) {
[0]=>
string(1) "e"
[1]=>
string(1) "f"
[2]=>
string(1) "g"
[3]=>
string(1) "n"
}
}
可以删除数组中的某个值:
eg:
<?php
$arr = array(
array('a','b','c')
);
var_dump($arr);
unset($arr[0][0]);
var_dump($arr);
?>
输出:
array(1) {
[0]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
array(1) {
[0]=>
array(2) {
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
修改数组中元素的值
在$value前边加上&符号,可以实现引用赋值。
eg:
<?php
$arr = array(1,2,3);
foreach($arr as &$array) {
$array = $array * 2;
}
unset($array);//取消掉引用
var_dump($arr);
?>
输出:
array(3) {
[0]=>
int(2)
[1]=>
int(4)
[2]=>
int(6)
}
注:$value的引用仅在被遍历的数组可以被引用时才可用(例如是个变量),否则无效:
eg
<?php
foreach(array(1,2,3) as &$value) {
$value = $value * 2;
}
?>