Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

list

(PHP 4, PHP 5)

listDeğişkenlere bir dizi gibi atama yapar

Açıklama

array list ( mixed $değişken [, mixed $... ] )

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.

Değiştirgeler

değişken

Bir değişken.

Dönen Değerler

Atanan dizi döner.

Ö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ç 
mysql_query("SELECT id, ad, ucret FROM personel"$conn);
while (list(
$id$ad$ücret) = mysql_fetch_row($sonuç)) {
    echo 
" <tr>\n" .
          
"  <td><a href=\"info.php?id=$id\">$ad</a></td>\n" .
          
"  <td>$ücret</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):

array(3) {
  [2]=>
  string(6) "kafein"
  [1]=>
  string(4) "uyku"
  [0]=>
  string(5) "kahve"
}

Notlar

Uyarı

list() değerleri en sağdaki değiştirgeden itibaren atar. Düz değişken kullanıyorsanız bundan dolayı endişelenmeniz gerekmez. Fakat indisli diziler kullanıyorsanız, dizi indislerinin, list()'teki yazılış sırasına göre soldan sağa sıralanacağını düşünürsünüz. Fakat atama sağdan sola doğru yapılır.

Bilginize:

list() sadece sayısal indisli dizilerle çalışır ve indislerin 0'dan başladığı varsayılır.

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

add a note add a note

User Contributed Notes 10 notes

up
32
chris at chlab dot ch
1 year ago
The example states the following:
<?php
// list() doesn't work with strings
list($bar) = "abcde";
var_dump($bar);
// output: NULL
?>

If the string is in a variable however, it seems using list() will treat the string as an array:
<?php
$string
= "abcde";
list(
$foo) = $string;
var_dump($foo);
// output: string(1) "a"
?>
up
13
megan at voices dot com
11 months ago
As noted, list() will give an error if the input array is too short. This can be avoided by array_merge()'ing in some default values. For example:

<?php
$parameter
= 'name';
list(
$a, $b ) = array_merge( explode( '=', $parameter ), array( true ) );
?>

However, you will have to array_merge with an array long enough to ensure there are enough elements (if $parameter is empty, the code above would still error).

An alternate approach would be to use array_pad on the array to ensure its length (if all the defaults you need to add are the same).

<?php
    $parameter
= 'bob-12345';
    list(
$name, $id, $fav_color, $age ) = array_pad( explode( '-', $parameter ), 4, '' );
   
var_dump($name, $id, $fav_color, $age);
/* outputs
string(3) "bob"
string(5) "12345"
string(0) ""
string(0) ""
*/
?>
up
18
svennd
1 year ago
The list() definition won't throw an error if your array is longer then defined list.
<?php

list($a, $b, $c) = array("a", "b", "c", "d");

var_dump($a); // a
var_dump($b); // b
var_dump($c); // c
?>
up
0
john at jbwalker dot com
8 months ago
The list construct seems to look for a sequential list of indexes rather taking elements in sequence. What that obscure statement means is that if you unset an element, list will not simply jump to the next element and assign that to the variable but will treat the missing element as a null or empty variable:

    $test = array("a","b","c","d");
    unset($test[1]);
    list($a,$b,$c)=$test;
    print "\$a='$a' \$b='$b' \$c='$c'<BR>";

results in:
$a='a' $b='' $c='c'

not:
$a='a' $b='c' $c='d'
up
-3
srikanth at networthindia dot com
1 year ago
Note: list cannot assign array cast of object to variables straight away. first you need to convert the object to numeric indexed array.

ex:
list($a, $b, $d) = (array) $abc; // $abc is an object; this will not assign.
list($a, $b, $c) = array_values((array) $abc); // This will work.
up
-2
Achilles at thegreatwarrior dot com
1 year ago
Second, when you’re using the list() function, you must acknowledge each array element. You could not do this
list($weekday, $month) = $date;

But you can use empty values to ignore elements:
list ($weekday, , $month) = $date;
up
-3
Arne
1 year ago
list() will give an error if the input array is too short. This can be avoided by array_merge()'ing in some default values. For example:

<?php
$parameter
= 'name';
list(
$a, $b ) = array_merge( explode( '=', $parameter ), array( true ) );
?>
up
-5
edam
6 months ago
This doesn't work on associative array.  For example:

    list( $a, $b, $c ) = array( 'a' => 'a', 'b' => 'b', 'c' => 'c' );
    PHP Notice:  Undefined offset: 2 in Command line code on line 1
    PHP Notice:  Undefined offset: 1 in Command line code on line 1
    PHP Notice:  Undefined offset: 0 in Command line code on line 1
up
-6
Matt
1 year ago
You can't type check within the list() parameters:

list ( array $var1, $var2 ) = array ( array('one','two'), 'three');

generates a parse error, unexpected 'array'.
up
-3
Thanos K.
5 months ago
Also it seems that it doesn't work as expected with arrays with non numeric keys:

list($k, $l, $m) = array('a' => 'val1', 'b' => 'val2', 'c' => 'val3');

Gives empty variables..
To Top