each

(PHP 4, PHP 5, PHP 7)

eachBir diziden, gösterici konumundaki anahtar değer çiftini döndürdükten sonra göstericiyi bir ilerletir

Açıklama

each(array|object &$dizi): array

Belirtilen diziden, gösterici konumundaki anahtar değer çiftini döndürür ve göstericiyi sonraki öğeye ilerletir.

each() işini bitirdikten sonra dizi göstericisi bir sonraki elemana konumlanır; eğer gösterici zaten sonuncu elemandaysa gösterici sonuncudan sonraki olmayan elemana konumlanır. Dizi baştan taranmak istenirse gösterici reset() ile dizinin başlangıcına taşınmalıdır.

Bağımsız Değişkenler

dizi

Üzerinde işlem yapılacak dizi.

Dönen Değerler

dizi dizisinin göstericisinin üzerinde bulunduğu anahtar değer çifti ile döner. Bu çift dört elemanlı, 0, 1, key ve value anahtarlarına sahip bir dizi olarak döner. 0 ve key elemanları anahtarı, 1 ve value ise değeri içerir.

Eğer gösterici sonuncu dizi elemanının sonrasındaysa each() işlevi false döndürür.

Örnekler

Örnek 1 - each() örnekleri

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

$bar şu anahtar değer çiftlerini içerir:

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

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

$bar şu anahtar değer çiftlerini içerir:

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

each() genellikle bir diziyi taramak için list() işleviyle birlikte kullanılır. Örnek:

Örnek 2 - each() ile bir dizinin taranması

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

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

Yukarıdaki örneğin çıktısı:

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

Dikkat

Bir dizinin bir değişkene atanması özgün dizi göstericisini sıfırladığından yukarıdaki örnekte $fruit dizisini döngü içinde başka bir değişkene atamak sonsuz bir döngüye sebep olurdu.

Uyarı

each() işlevi nesne de kabul eder fakat beklenmedik sonuçlar verebilir. Bu bakımdan nesne öğelerinin each() ile taranması önerilmez.

Ayrıca Bakınız

  • key() - Bir diziden gösterici konumundaki anahtarı döndürür
  • list() - Değişkenlere bir dizi gibi atama yapar
  • current() - Bir diziden gösterici konumundaki elemanı döndürür
  • reset() - Bir dizinin dahili göstericisini ilk elemana konumlar
  • next() - Dahili dizi göstericisini bir ilerletir
  • prev() - Dahili dizi göstericisini bir geriletir
  • foreach
  • Nesne Yineleme

add a note

User Contributed Notes 5 notes

up
20
janhsh
3 years ago
Following the obsolescence of the each() function, here is a way to correct your source codes: 

If you use each() in a while loop like this: 

   while (list($Key,$Value)=@each($Array)){
   ....
   }

you have to replace with

    foreach ($Array  as $Key => $Value){        
    ....
    }

In the same minds.

   while (list(,$Value)=@each($Array)){
   ....
   }

will become

    foreach ($Array  as $Value){        
    ....
    }
up
18
phpcoder at gmail dot com
6 years ago
each was deprecated because it exposed too much of the internal implementation details, blocking language development. ("We can't do X because it would break each().")

https://wiki.php.net/rfc/deprecations_php_7_2#each

If you want an array pointer, maintain it yourself. Probably a good idea anyway, because then it's visible in the code.
up
12
sjoerd-php at linuxonly dot nl
19 years ago
Use foreach instead of while, list and each. Foreach is:
- easier to read
- faster
- not influenced by the array pointer, so it does not need reset().

It works like this:
<?php
$arr = array('foo', 'bar');
foreach ($arr as $value) {
    echo "The value is $value.";
}

$arr = array('key' => 'value', 'foo' => 'bar');
foreach ($arr as $key => $value) {
    echo "Key: $key, value: $value";
}
?>
up
7
man13or at hotmail dot fr
6 years ago
Hello, since each() and list() often "betray" very old applications, I simply recommend not to use them anymore.

If you want to assign variables based on an associative array,
Replace this:

while(list ($key, $value) = each ($my_array)) {
    $$key = $value;
}

with this:

foreach ($my_array as $key => $value) {
    $$key = $value;
}
up
2
Henk Poley
6 years ago
Rector has an automated fix ('ListEachRector') to migrate away from `each()`:

https://github.com/rectorphp/rector/blob/master/docs/AllRectorsOverview.md#listeachrector

If you look at the code example you'll see this is even quite simple to do by hand.
To Top