foreach

(PHP 4, PHP 5, PHP 7)

foreach 锟斤法锟结构锟结供锟剿憋拷锟斤拷锟斤拷锟斤拷募虻シ锟绞斤拷锟�foreach 锟斤拷锟杰癸拷应锟斤拷锟斤拷锟斤拷锟斤拷投锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷应锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵的憋拷锟斤拷锟斤拷锟斤拷锟斤拷未锟斤拷始锟斤拷锟侥憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷锟斤法锟斤拷

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

锟斤拷一锟街革拷式锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 array_expression 锟斤拷锟介。每锟斤拷循锟斤拷锟叫o拷锟斤拷前锟斤拷元锟斤拷值锟斤拷锟斤拷锟斤拷 $value 锟斤拷锟斤拷锟斤拷锟斤拷锟节诧拷锟斤拷指锟斤拷锟斤拷前锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟窖拷锟斤拷薪锟斤拷锟矫碉拷锟斤拷一锟斤拷锟斤拷元锟斤拷锟斤拷

锟节讹拷锟街革拷式锟斤拷同锟斤拷锟斤拷锟铰o拷只锟斤拷锟剿碉拷前锟斤拷元锟侥硷拷锟斤拷也锟斤拷锟斤拷每锟斤拷循锟斤拷锟叫憋拷锟斤拷锟斤拷锟斤拷锟斤拷 $key锟斤拷

锟斤拷锟杰癸拷锟皆讹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷

Note:

锟斤拷 foreach 锟斤拷始执锟斤拷时锟斤拷锟斤拷锟斤拷锟节诧拷锟斤拷指锟斤拷锟斤拷远锟街革拷锟斤拷一锟斤拷锟斤拷元锟斤拷锟斤拷锟斤拷味锟脚诧拷锟斤拷要锟斤拷 foreach 循锟斤拷之前锟斤拷锟斤拷 reset()锟斤拷

锟斤拷锟斤拷 foreach 锟斤拷锟斤拷锟节诧拷锟斤拷锟斤拷指锟诫,锟斤拷循锟斤拷锟斤拷锟睫革拷锟斤拷值锟斤拷锟斤拷锟杰碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿拷锟�

锟斤拷锟皆猴拷锟斤拷锟阶碉拷通锟斤拷锟斤拷 $value 之前锟斤拷锟斤拷 & 锟斤拷锟睫革拷锟斤拷锟斤拷锟皆拷亍锟斤拷朔锟斤拷锟斤拷锟斤拷锟�锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷锟角匡拷锟斤拷一锟斤拷值锟斤拷

<?php
$arr 
= array(1234);
foreach (
$arr as &$value) {
    
$value $value 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 锟斤拷锟饺★拷锟斤拷锟斤拷锟斤拷锟�
?>

$value 锟斤拷锟斤拷锟矫斤拷锟节憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷员锟斤拷锟斤拷锟绞憋拷趴锟斤拷茫锟斤拷锟斤拷锟斤拷歉锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷麓锟斤拷锟斤拷锟斤拷薹锟斤拷锟斤拷校锟�

<?php
foreach (array(1234) as &$value) {
    
$value $value 2;
}

?>

Warning

锟斤拷锟斤拷锟斤拷锟揭伙拷锟皆拷氐锟� $value 锟斤拷锟斤拷锟斤拷 foreach 循锟斤拷之锟斤拷锟皆会保锟斤拷锟斤拷锟斤拷锟斤拷使锟斤拷 unset() 锟斤拷锟斤拷锟斤拷锟斤拷锟劫★拷

Note:

foreach 锟斤拷支锟斤拷锟斤拷"@"锟斤拷锟斤拷锟狡达拷锟斤拷锟斤拷息锟斤拷锟斤拷锟斤拷锟斤拷

锟矫伙拷锟斤拷锟斤拷注锟解到锟斤拷锟斤拷锟铰的达拷锟诫功锟斤拷锟斤拷全锟斤拷同锟斤拷

<?php
$arr 
= array("one""two""three");
reset($arr);
while (list(, 
$value) = each($arr)) {
    echo 
"Value: $value<br>\n";
}

foreach (
$arr as $value) {
    echo 
"Value: $value<br />\n";
}
?>

锟斤拷锟铰达拷锟诫功锟斤拷也锟斤拷全锟斤拷同锟斤拷

<?php
$arr 
= array("one""two""three");
reset($arr);
while (list(
$key$value) = each($arr)) {
    echo 
"Key: $key; Value: $value<br />\n";
}

foreach (
$arr as $key => $value) {
    echo 
"Key: $key; Value: $value<br />\n";
}
?>

示锟斤拷锟矫凤拷锟侥革拷锟斤拷锟斤拷锟接o拷

<?php
/* foreach example 1: value only */

$a = array(12317);

foreach (
$a as $v) {
   echo 
"Current value of \$a: $v.\n";
}

/* foreach example 2: value (with its manual access notation printed for illustration) */

$a = array(12317);

$i 0/* for illustrative purposes only */

foreach ($a as $v) {
    echo 
"\$a[$i] => $v.\n";
    
$i++;
}

/* foreach example 3: key and value */

$a = array(
    
"one" => 1,
    
"two" => 2,
    
"three" => 3,
    
"seventeen" => 17
);

foreach (
$a as $k => $v) {
    echo 
"\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach (
$a as $v1) {
    foreach (
$v1 as $v2) {
        echo 
"$v2\n";
    }
}

/* foreach example 5: dynamic arrays */

foreach (array(12345) as $v) {
    echo 
"$v\n";
}
?>

锟斤拷 list() 锟斤拷嵌锟阶碉拷锟斤拷锟斤拷锟斤拷

(PHP 5 >= 5.5.0, PHP 7)

PHP 5.5 锟斤拷锟斤拷锟剿憋拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟侥癸拷锟杰诧拷锟揭帮拷嵌锟阶碉拷锟斤拷锟斤拷锟斤拷锟斤拷循锟斤拷锟斤拷锟斤拷锟叫o拷只锟借将 list() 锟斤拷为值锟结供锟斤拷

锟斤拷锟界:

<?php
$array 
= [
    [
12],
    [
34],
];

foreach (
$array as list($a$b)) {
    
// $a contains the first element of the nested array,
    // and $b contains the second element.
    
echo "A: $a; B: $b\n";
}
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

A: 1; B: 2
A: 3; B: 4

list() 锟叫的碉拷元锟斤拷锟斤拷锟斤拷锟斤拷嵌锟斤拷锟斤拷锟斤拷模锟斤拷锟绞憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟介单元锟斤拷锟斤拷锟斤拷锟皆o拷

<?php
$array 
= [
    [
12],
    [
34],
];

foreach (
$array as list($a)) {
    
// Note that there is no $b here.
    
echo "$a\n";
}
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

1
3

锟斤拷锟� list() 锟斤拷锟叫筹拷锟侥碉拷元锟斤拷锟斤拷嵌锟斤拷锟斤拷锟斤拷锟斤拷岱拷锟揭伙拷锟斤拷锟较拷锟斤拷锟侥达拷锟斤拷锟斤拷息锟斤拷

<?php
$array 
= [
    [
12],
    [
34],
];

foreach (
$array as list($a$b$c)) {
    echo 
"A: $a; B: $b; C: $c\n";
}
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C: 

Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C: