Функция list() в PHP.


Функция list() в PHP позволяет легко присвоить нескольким переменным значения элементов массива. Все это делается в одной строке:

1
list($a, $b, $c) = $my_array;

Рассмотрим более детальный пример:

1
2
3
4
5
6
7
8
<?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() ненужные элементы:

1
2
3
4
<?php
$my_array = array('Mazda', 'BMW', 'Honda');
list($a, , $c) = $my_array;
?>

Обратите внимание, что мы не просто не указываем второй параметр, а оставляем его место пустым, ставя запятую, как если бы он был.

Так мы напишем наш код, если нам нужен будет только последний элемент:

1
2
3
4
<?php
$my_array = array('Mazda', 'BMW', 'Honda');
list( , , $c) = $my_array;
?>

Функция list() удобна для обработки значений, получаемых запросом в базу данных. Рассмотрим пример:

1
2
3
4
5
6
7
8
9
<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() присваивает значения, начиная с крайнего правого параметра.

Для вас это будет совершенно незаметным, если вы работаете с обычными переменными. Однако, если в качестве параметров вы указываете элементы другого массива, то элементы в этом массиве будут располагаться в обратной последовательности.

1
2
3
4
5
6
7
<?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:

1
2
3
4
5
<?php
for($i = 0;$i < count($a); $i++){
   echo $a[i].'<br>';
}
?>

Выведет:

Mazda
BMW
Honda

При использовании конструкции foreach без указания индексов элементов, список будет в обратном порядке:

1
2
3
4
5
<?php 
foreach($a as $value){
   echo $value.'<br>';
}
?>

Получим:

Honda
BMW
Mazda





Другие посты

Категория: PHP-скрипты

Оставить комментарий