Функция list() в PHP позволяет легко присвоить нескольким переменным значения элементов массива. Все это делается в одной строке:
list($a, $b, $c) = $my_array;
Рассмотрим более детальный пример:
<?php
$my_array = array('Mazda', 'BMW', 'Honda');
list($a, $b, $c) = $my_array;
echo $a.'<br>';// выведет Mazda
echo $b.'<br>';// выведет BMW
echo $c;// выведет Honda
?>
Также мы можем брать только избранные элементы массива, пропуская в параметрах функции list() ненужные элементы:
<?php
$my_array = array('Mazda', 'BMW', 'Honda');
list($a, , $c) = $my_array;
?>
Обратите внимание, что мы не просто не указываем второй параметр, а оставляем его место пустым, ставя запятую, как если бы он был.
Так мы напишем наш код, если нам нужен будет только последний элемент:
<?php
$my_array = array('Mazda', 'BMW', 'Honda');
list( , , $c) = $my_array;
?>
Функция list() удобна для обработки значений, получаемых запросом в базу данных. Рассмотрим пример:
<h1>Список пользователей системы</h1>
<?php
//мы уже подключились к базе и имеем ссылку на соединение $conn_link
$result = mysql_query("SELECT id, username, age FROM users", $conn_link);
while (list($id, $username, $age) = mysql_fetch_row($result)) {
echo $id." ".$username." ".$age."<br>";
}
?>
Важное замечание: функция list() присваивает значения, начиная с крайнего правого параметра.
Для вас это будет совершенно незаметным, если вы работаете с обычными переменными. Однако, если в качестве параметров вы указываете элементы другого массива, то элементы в этом массиве будут располагаться в обратной последовательности.
<?php
$a = array();
$my_array = array('Mazda', 'BMW', 'Honda');
list($a[0], $a[1], $a[2]) = $my_array;
print_r($a);
?>
В результате выполнения данного кода мы получим массив со следующей структурой:
Array
(
[2] => Honda
[1] => BMW
[0] => Mazda
)
Как видите, порядок элементов стал обратным – от 2 до 0. Однако, проблем при проходе по данному массиву не возникнет, если на каждой итерации вы напрямую указываете индекс элемента, увеличивая его на 1 на каждом шаге, то есть, используя конструкцию for:
<?php
for($i = 0;$i < count($a); $i++){
echo $a[i].'<br>';
}
?>
Выведет:
Mazda
BMW
Honda
При использовании конструкции foreach без указания индексов элементов, список будет в обратном порядке:
<?php
foreach($a as $value){
echo $value.'<br>';
}
?>
Получим:
Honda
BMW
Mazda