我不太了解each()和list()函数。任何人都可以给我一些细节,并向我解释它是如何有用的?
修改
<?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]中有值bob,但它显然在数组[0]中?
答案 0 :(得分:5)
each()函数返回当前元素键和值,并向前移动内部指针。 each()
list函数 - 将变量分配为数组 list()
示例用法是通过数组迭代
while(list($key,$val) = each($array))
{
echo "The Key is:$key \n";
echo "The Value is:$val \n";
}
答案 1 :(得分:5)
list
本身不是一个函数,因为它的使用方式完全不同。
假设你有一个数组
$arr = array('Hello', 'World');
使用list
,您可以快速将这些不同的数组成员分配给变量
list($item1, $item2) = $arr; //$item1 equals 'Hello' and $item2 equals 'World'
答案 2 :(得分:2)
list
的一个非常常见的例子是考虑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
。
答案 3 :(得分:2)
编辑:可能值得注意的是each
已被弃用
警告:自PHP 7.2.0起,此功能已被弃用。非常不鼓励依赖此功能
让我们先查看each()
:它会返回当前值(首先是$array[0 | "first value in association array ]
。所以
$prices = ('x'=>100 , 'y'=>200 , 'z'= 300 );
说我想在不使用foreach循环的情况下遍历这些数组。
while( $e = each($prices) ){
echo $e[key] . " " . $e[value] . "<br/>" ;
}
当每个点到达可能导致的非现有元素时
while循环终止。
当你调用each()
时,它会给你一个包含四个值的数组和四个数组位置的索引。位置'key'和0包含当前元素的键,位置'value'和1包含该
当前元素的值。
所以这个循环会列出数组的每个键一个空格,然后是值
其次让我们看一下list()
。
它基本上会重命名'value'和'key',尽管它必须与each()
一起使用
while( list($k , $v ) = each($prices) ){
echo $k /*$e[key]*/ . " " . $v /*$e[value]*/ . "<br/>" ;
}
因此简而言之each()
每次返回数组时都会遍历数组。 list()
重命名要在循环内使用的数组的值,键对。
通知:reset($prices)
:
将该数组的each()
指针重置为第一个元素。
答案 4 :(得分:1)
list不是函数,它是一种语言结构。它用于为不同的变量分配多个值。
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):
答案 5 :(得分:1)
要在第一次编辑中回答问题:
基本上,PHP正在创建一个混合数组,其中包含来自源数组中当前元素的键/值对。
因此,您可以使用$bar[0]
获取密钥,使用$bar[1]
获取值。或者,您可以使用$bar['key']
获取密钥,使用$bar['value']
获取值。它始终是源数组中的单个键/值对,它只是为您提供了两种不同的访问实际键和实际值的途径。
答案 6 :(得分:1)
假设你有一个多维数组:
+---+------+-------+ |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;
}
?>
答案 7 :(得分:0)
基本上,将它们结合使用是迭代关联数组的早期方法,特别是如果您不知道数组键的名称。
如今我真的没有理由不使用foreach
代替。
list()
可以与each()
分开使用,以便将数组的元素分配给更易于阅读的变量。