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"
?>
list
(PHP 4, PHP 5)
list — Değişkenlere bir dizi gibi atama yapar
Açıklama
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(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):
array(3) {
[2]=>
string(6) "kafein"
[1]=>
string(4) "uyku"
[0]=>
string(5) "kahve"
}
Notlar
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.
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
?>
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.
