each

(PHP 4, PHP 5, PHP 7)

each返回?cái)?shù)組中當(dāng)前的鍵/值對并將數(shù)組指針向前移動一步

警告

本函數(shù)已自 PHP 7.2.0 起被廢棄,并自 PHP 8.0.0 起被移除。 強(qiáng)烈建議不要依賴本函數(shù)。

說明

each(array|object &$array): array

返回?cái)?shù)組中當(dāng)前的鍵/值對并將數(shù)組指針向前移動一步

在執(zhí)行 each() 之后,數(shù)組指針將停留在數(shù)組中的下一個單元或者當(dāng)碰到數(shù)組結(jié)尾時停留在最后一個單元。如果要再用 each 遍歷數(shù)組,必須使用 reset()。

參數(shù)

array

輸入的數(shù)組。

返回值

返回 array 數(shù)組中當(dāng)前指針位置的鍵/值對并向前移動數(shù)組指針。鍵值對被返回為四個單元的數(shù)組,鍵名為0,1keyvalue。單元 0key 包含有數(shù)組單元的鍵名,1value 包含有數(shù)據(jù)。

如果內(nèi)部指針越過了數(shù)組的末端,則 each() 返回 false。

范例

示例 #1 each() 例子

<?php
$foo 
= array("bob""fred""jussi""jouni""egon""marliese");
$bar each($foo);
print_r($bar);
?>

$bar 現(xiàn)在包含有如下的鍵/值對:

Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)

<?php
$foo 
= array("Robert" => "Bob""Seppo" => "Sepi");
$bar each($foo);
print_r($bar);
?>

$bar 現(xiàn)在包含有如下的鍵/值對:

Array
(
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
)

each() 經(jīng)常和 list() 結(jié)合使用來遍歷數(shù)組,例如:

示例 #2 用 each() 遍歷數(shù)組

<?php
$fruit 
= array('a' => 'apple''b' => 'banana''c' => 'cranberry');

reset($fruit);
while (list(
$key$val) = each($fruit)) {
    echo 
"$key => $val\n";
}
?>

以上例程會輸出:

a => apple
b => banana
c => cranberry

警告

因?yàn)閷⒁粋€數(shù)組賦值給另一個數(shù)組時會重置原來的數(shù)組指針,因此在上邊的例子中如果我們在循環(huán)內(nèi)部將 $fruit 賦給了另一個變量的話將會導(dǎo)致無限循環(huán)。

警告

each() 也接受對象,但可能會返回意外結(jié)果。因此不建議使用 each() 遍歷對象屬性。

參見

  • key() - 從關(guān)聯(lián)數(shù)組中取得鍵名
  • list() - 把數(shù)組中的值賦給一組變量
  • current() - 返回?cái)?shù)組中的當(dāng)前值
  • reset() - 將數(shù)組的內(nèi)部指針指向第一個單元
  • next() - 將數(shù)組中的內(nèi)部指針向前移動一位
  • prev() - 將數(shù)組的內(nèi)部指針倒回一位
  • foreach
  • 遍歷對象