课程咨询 :025-86971863

南京PHP培训 > 达内新闻 > 南京PHP培训班学习foreach遍历数组
  • 南京PHP培训班学习foreach遍历数组

    发布:南京PHP培训      来源:达内新闻    

  • 南京PHP培训班学习foreach遍历数组,(PHP 4, PHP 5)

    The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes:

    foreach (array_expression as $value)

    statement

    foreach (array_expression as $key => $value)

    statement

    The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element).

    The second form will additionally assign the current element's key to the $key variable on each iteration.

    It is possible to customize object iteration.

    Note:

    When foreach first starts executing, the internal array pointer is automatically reset to the first element of the array. This means that you do not need to call reset() before a foreach loop.

    As foreach relies on the internal array pointer, changing it within the loop may lead to unexpected behavior.

    In order to be able to directly modify array elements within the loop precede $value with &. In that case the value will be assigned by reference.

    $arr = array(1, 2, 3, 4);

    foreach ($arr as &$value) {

    $value = $value * 2;

    }

    // $arr is now array(2, 4, 6, 8)

    unset($value); // break the reference with the last element

    ?>

    Referencing $value is only possible if the iterated array can be referenced (i.e. if it is a variable). The following code won't work:

    foreach (array(1, 2, 3, 4) as &$value) {

    $value = $value * 2;

    }

    ?> Warning

    Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

    Note:

    foreach does not support the ability to suppress error messages using '@'.

    You may have noticed that the following are functionally identical:

    $arr = array("one", "two", "three");

    reset($arr);

    while (list(, $value) = each($arr)) {

    echo "Value: $value

    \n";

    }

    foreach ($arr as $value) {

    echo "Value: $value

    \n";

    }

    ?>

    The following are also functionally identical:

    $arr = array("one", "two", "three");

    reset($arr);

    while (list($key, $value) = each($arr)) {

    echo "Key: $key; Value: $value

    \n";

    }

    foreach ($arr as $key => $value) {

    echo "Key: $key; Value: $value

    \n";

    }

    ?>

    Some more examples to demonstrate usage:

    /* foreach example 1: value only */

    $a = array(1, 2, 3, 17);

    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(1, 2, 3, 17);

    $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(1, 2, 3, 4, 5) as $v) {

    echo "$v\n";

    }

    ?>

    Unpacking nested arrays with list()

    (PHP 5 >= 5.5.0)

    PHP 5.5 added the ability to iterate over an array of arrays and unpack the nested array into loop variables by providing a list() as the value.

    For example:

    $array = [

    [1, 2],

    [3, 4],

    ];

    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";

    }

    ?>

    The above example will output:

    A: 1; B: 2

    A: 3; B: 4

    You can provide fewer elements in the list() than there are in the nested array, in which case the leftover array values will be ignored:

    $array = [

    [1, 2],

    [3, 4],

    ];

    foreach ($array as list($a)) {

    // Note that there is no $b here.

    echo "$a\n";

    }

    ?>

    The above example will output:

    1

    3

    A notice will be generated if there aren't enough array elements to fill the list():

    $array = [

    [1, 2],

    [3, 4],

    ];

    foreach ($array as list($a, $b, $c)) {

    echo "A: $a; B: $b; C: $c\n";

    }

    ?>

    The above example will output:

    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:

    推荐文章

上一篇:南京PHP培训班学习连接Access数据库代码

下一篇:南京PHP培训班学习计算小数点后位数

最新开班日期  |  更多

PHP高级开发工程师就业班

PHP高级开发工程师就业班

开班日期:04-28

PHP高级开发工程师精品班

PHP高级开发工程师精品班

开班日期:04-28

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:04-28

PHP高级开发工程师定制班

PHP高级开发工程师定制班

开班日期:04-28

  • 地址:南京市秦淮区太平南路333号金陵御景园8楼达内
  • 课程培训电话:025-86971863     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56