Я не понимаю каждого () и список () функция настолько хорошо. Кто-либо может предоставить мне немного больше подробной информации и объяснить мне, как это может быть полезно?
Править:
<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>
Array
(
[1] => bob
[value] => bob
[0] => 0
[key] => 0
)
Это означает в массиве [1] существует боб значения, но это находится ясно в массиве [0]?
список
не является функцией как таковой, поскольку он используется совершенно по-другому.
Допустим, у вас есть массив
$arr = array('Hello', 'World');
С помощью list
вы можете быстро назначить эти различные элементы массива переменным
list($item1, $item2) = $arr; //$item1 equals 'Hello' and $item2 equals 'World'
Функция each () возвращает ключ и значение текущего элемента и перемещает внутренний указатель вперед. each ()
Функция списка - назначает переменные, как если бы они были массивом { {1}} list ()
Пример использования - для итерации по массивам
while(list($key,$val) = each($array))
{
echo "The Key is:$key \n";
echo "The Value is:$val \n";
}
Допустим, у вас есть многомерный массив:
+---+------+-------+ |ID | Name | Job | | 1 | Al | Cop | | 2 | Bob | Cook | +---+------+-------+
Вы можете сделать что-то вроде:
<?php
while(list($id,$name,$job) = each($array)) {
echo "<a href=\"profile.php?id=".$id."\">".$name."</a> is a ".$job;
}
?>
Чтобы ответить на вопрос в первом редактировании:
В основном, PHP создает гибридный массив с парой ключ / значение из текущего элемента в исходном массиве.
Таким образом, вы можете получить ключ, используя $ bar [0]
, и значение, используя $ bar [1]
. ИЛИ вы можете получить ключ, используя $ bar ['key']
, и значение, используя $ bar ['value']
. Это всегда одна пара ключ / значение из исходного массива, это просто дает вам два разных пути доступа к фактическому ключу и фактическому значению.
Их совместное использование - это, по сути, ранний способ перебора ассоциативных массивов, особенно если вы не знали имен ключей массива.
В настоящее время я действительно не знаю причин не использовать вместо этого просто foreach
.
list ()
можно использовать отдельно от each ()
, чтобы назначать элементы массива более легко читаемым переменным.
Очень распространенный пример для списка
- когда вы думаете о файлах CSV. Представьте, что у вас есть простая база данных, сохраненная в формате CSV со столбцами id
, title
и text
, такой файл может выглядеть так:
1|Foo|Lorem ipsum dolor|
2|Bar|sit amet|
...
Теперь, когда вы разбираете этот файл, вы можете сделать это следующим образом, используя функцию list
:
$lines = file( 'myFile.csv' );
for ( $i = 0; $i < count( $lines ); $i++ )
{
list( $id, $title, $text, $null ) = explode( '|', $lines[$i], 4 );
echo "Id: $id, Title: $title\n$text\n\n";
}
Другая функция, each
, по сути, является старым способом пройтись по массивам, используя внутренние указатели. Более распространенный способ сделать это - использовать foreach
сейчас.
список - это не функция, это языковая конструкция. Он используется для присвоения нескольких значений разным переменным.
list ($ a, $ b, $ c) = array (1, 2, 3);
Теперь $ a
равно 1
и т. Д. .
Каждый массив имеет внутренний указатель, который указывает на элемент в его массиве. По умолчанию он указывает на начало.
each
возвращает текущий ключ и значение из указанного массива, а затем перемещает указатель к следующему значению. Итак, сложите их вместе:
list ($ key, $ val) = each ($ array);
RHS возвращает массив, который назначен для $ key
и $ val
. Внутренний указатель в `$ array 'перемещается к следующему элементу.
Часто вы видите это в цикле:
while(list($key, $val) = each($array)):
Это в основном то же самое, что:
foreach($array as $key => $val):