PHP's foreach traversal array _php tutorial

Source: Internet
Author: User
Tags php foreach

PHP's foreach Traversal array


Foreach

(PHP 4, PHP 5)

The foreach construct provides an easy-to-iterate over arrays. foreach works only on arrays and objects, and would issue an error if you try to use it on a variable with a different Da TA type or an uninitialized variable. There is syntaxes:

foreach (array_expression as $value)    Statementforeach (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 are advanced by E (So in the next iteration, you'll be looking at the next element).

The second form would 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 are automatically reset to the first element of the array. This means, this is a foreach loop with need to call Reset () before a.

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

In order to being able to directly modify array elements within the loop precede $value with &. In this case the value would 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 ' @ '.

Noticed that the following is 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 is 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 it 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,
"Both" = 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 $v 1) {
foreach ($v 1 as $v 2) {
echo "$v 2\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 a 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 would output:

a:1; B:2a:3; B:4

You can provide fewer elements in the list () than there is in the nested array, in which case the leftover array values W Ill 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 would output:

13

A notice'll 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 would output:

http://www.bkjia.com/PHPjc/845435.html www.bkjia.com true http://www.bkjia.com/PHPjc/845435.html techarticle php foreach traversal array foreach (PHP 4, PHP 5) The foreach construct provides an easy-to-iterate over-arrays. foreach Work s only on arrays and objects, and would issue an erro ...

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.