list

(PHP 4, PHP 5, PHP 7, PHP 8)

listDeğişkenlere bir dizi gibi atama yapar

Açıklama

list ( mixed $değişken , mixed ...$değişkenler = ? ) : array

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ı.

Uyarı

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ştirgeler

değişken

Değişken.

değişkenler

Diğer değişkenler.

Dönen Değerler

Atanan dizi döner.

Sürüm Bilgisi

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.

Örnekler

Ö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(23));

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(=> 'a''foo' => 'b'=> '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(
=> $second=> $fourth) = [1234];
echo 
"$second$fourth\n";

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

id: 1, name: Tom
id: 2, name: Fred

2, 4

Ayrıca Bakınız

  • each() - Bir diziden, gösterici konumundaki anahtar değer çiftini döndürdükten sonra göstericiyi bir ilerletir
  • array() - Bir dizi oluşturur
  • extract() - Bir dizideki değişkenleri simge tablosuna dahil eder