(PHP 4, PHP 5, PHP 7, PHP 8)
list — Değişkenlere bir dizi gibi atama yapar
array() gibi bu da bir işlev değil bir dil oluşumudur. list() işlevi tek deyimde birden fazla değişkene atama yapmak için kullanılır.
Bilginize:
PHP 7.1.0 öncesinde, list() işlevi sadece sayısal dizilerde çalışır ve indislerin sıfırdan başladığı varsayılırdı.
PHP 5'te, list() işlevi değerleri atamaya en sağdaki değiştirgeyle başlardı. PHP 7'de, ise en soldaki değiştirge ile başlar.
Sıradan değişkenlerle çalışılıyorsa bundan endişe duymak gerekmez. Ancak indisli diziler kullanılıyorsa, indislerin işlenme sırasının list() işlevinde yazıldığı gibi soldan sağa olacağı umulursa da PHP 5'te işlenme sırası sağdan soladır.
Genel olarak, işlemin sırasına güvenmek önerilmez, çünkü gelecekte yine değişebilir.
değişken
Değişken.
değişkenler
Diğer değişkenler.
Atanan dizi döner.
Sürüm: | Açıklama |
---|---|
7.3.0 | Dizi bozmada gönderim atamaları için destek eklendi. |
7.1.0 | list() işlevine anahtarlar belirtilebiliyor. Bu, tamsayı olmayan veya sıralı olmayan anahtarlarla dizilerin yok edilmesini sağlar. |
7.0.0 | Atama işlemlerinin gerçekleştirilme sırası değişti. |
7.0.0 | list() ifadeleri artık tamamen boş olamıyor. |
7.0.0 | Dizeler artık patlatılmıyor. |
Örnek 1 - list() örnekleri
<?php
$veri = array('kahve', 'uyku', 'kafein');
// Değişkenlerin tamamını listeleyelim
list($içecek, $neyi, $güç) = $veri;
echo "$içecek $neyi kaçırır, çünkü içinde $güç vardır.\n";
// Bir kısmını listeleyelim
list($içecek, , $güç) = $veri;
echo "$içecek $güç içerir.\n";
// Sadece üçüncü kalsın
list( , , $güç) = $veri;
echo "Bana $güç lazım!\n";
// list() dizgelerle çalışmaz
list($bar) = "abcde";
var_dump($bar); // NULL
?>
Örnek 2 - list() kullanım örneği
<table>
<tr>
<th>Çalışanın adı</th>
<th>Ücreti</th>
</tr>
<?php
$sonuç = $pdo->query("SELECT id, ad, ucret FROM personel");
while (list($id, $ad, $ücret) = $result->fetch(PDO::FETCH_NUM)) {
echo " <tr>\n" .
" <td><a href=\"info.php?id=$id\">$ad</a></td>\n" .
" <td>$ucret</td>\n" .
" </tr>\n";
}
?>
</table>
Örnek 3 - İç içe list() kullanımı
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
int(1) int(2) int(3)
Örnek 4 - Dizi indisleri ile list() kullanımı
<?php
$veri = array('kahve', 'uyku', 'kafein');
list($a[0], $a[1], $a[2]) = $veri;
var_dump($a);
?>
Aşağıdaki çıktıyı verir (dikkatı ederseniz, eleman sırası list() ile belirtilen sıra ile aynıdır):
Yukarıdaki örneğin PHP 7 çıktısı:
array(3) { [0]=> string(5) "kahve" [1]=> string(4) "uyku" [2]=> string(6) "kafein" }
Yukarıdaki örneğin PHP 5 çıktısı:
array(3) { [2]=> string(6) "kafein" [1]=> string(4) "uyku" [0]=> string(5) "kahve" }
Örnek 5 - list() ve indis tanımlarının sırası
list() tarafından tüketilecek dizi indislerinin tanımlanma sırası konu dışıdır.
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
Çıktısı aşağıdadır (elemanlar list() sözdiziminde yazıldıkları gibi sıralanmıştır):
array(4) { [2]=> string(1) "a" ["foo"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "d" } string(1) "c" string(1) "d" string(1) "a"
Örnek 6 - Anahtarlar ve list()
PHP 7.1.0 itibariyle, list() artık rasgele ifadeler halinde verilebilecek belirgin anahtarlar da içerebilir. Tamsayı ve dize anahtarlarının karıştırılmasına izin verilir; ancak, anahtarı olan ve olmayan öğeler karıştırılamaz.
<?php
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
foreach ($data as ["id" => $id, "name" => $name]) {
echo "id: $id, name: $name\n";
}
echo PHP_EOL;
list(1 => $second, 3 => $fourth) = [1, 2, 3, 4];
echo "$second, $fourth\n";
Yukarıdaki örneğin çıktısı:
id: 1, name: Tom id: 2, name: Fred 2, 4