каждый () и список () функция

Я не понимаю каждого () и список () функция настолько хорошо. Кто-либо может предоставить мне немного больше подробной информации и объяснить мне, как это может быть полезно?

Править:

<?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]?

5
задан tig 12 February 2010 в 00:29
поделиться

7 ответов

список не является функцией как таковой, поскольку он используется совершенно по-другому.

Допустим, у вас есть массив

$arr = array('Hello', 'World');

С помощью list вы можете быстро назначить эти различные элементы массива переменным

list($item1, $item2) = $arr; //$item1 equals 'Hello' and $item2 equals 'World'
5
ответ дан 18 December 2019 в 09:49
поделиться

Функция each () возвращает ключ и значение текущего элемента и перемещает внутренний указатель вперед. each ()

Функция списка - назначает переменные, как если бы они были массивом { {1}} list ()

Пример использования - для итерации по массивам

  while(list($key,$val) = each($array))
    {
      echo "The Key is:$key \n";
      echo "The Value is:$val \n";

    }
5
ответ дан 18 December 2019 в 09:49
поделиться

Допустим, у вас есть многомерный массив:

+---+------+-------+
|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;
}
?>
1
ответ дан 18 December 2019 в 09:49
поделиться

Чтобы ответить на вопрос в первом редактировании:

В основном, PHP создает гибридный массив с парой ключ / значение из текущего элемента в исходном массиве.

Таким образом, вы можете получить ключ, используя $ bar [0] , и значение, используя $ bar [1] . ИЛИ вы можете получить ключ, используя $ bar ['key'] , и значение, используя $ bar ['value'] . Это всегда одна пара ключ / значение из исходного массива, это просто дает вам два разных пути доступа к фактическому ключу и фактическому значению.

1
ответ дан 18 December 2019 в 09:49
поделиться

Их совместное использование - это, по сути, ранний способ перебора ассоциативных массивов, особенно если вы не знали имен ключей массива.

В настоящее время я действительно не знаю причин не использовать вместо этого просто foreach .

list () можно использовать отдельно от each () , чтобы назначать элементы массива более легко читаемым переменным.

0
ответ дан 18 December 2019 в 09:49
поделиться

Очень распространенный пример для списка - когда вы думаете о файлах 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 сейчас.

2
ответ дан 18 December 2019 в 09:49
поделиться

список - это не функция, это языковая конструкция. Он используется для присвоения нескольких значений разным переменным.

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): 
1
ответ дан 18 December 2019 в 09:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: