2

这是来自 php doc 的工作示例代码,用于将 list() 与 each() 一起使用

<?php

$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');

reset($fruit);
while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}
?>

输出是

a => apple
b => banana
c => cranberry

我不明白为什么它会这样工作和输出。因为,

从 each() 的API 来看,each() 返回一个包含4 个键/值对的数组。所以each($fruit)应该是这样的:

Array
(
    [1] => yy
    [value] => yy
    [0] => xx
    [key] => xx
)

对于代码:

while (list($key, $val) = each($fruit)) {
        echo "$key => $val\n";
    }

不应该$key等于each($fruit)[1]$val等于each($fruit)[value]?

4

2 回答 2

3

笔记:

list()仅适用于数值数组并假设数值索引从 0 开始。

http://php.net/list

换句话说,list主动按顺序查找数字键。list($foo, $bar)要求分配的数组具有键0并且1将它们分别分配给$foo$bar。这些键在数组本身中的顺序无关紧要。

于 2012-06-07T14:36:34.550 回答
1

PHP 7.1 更新了内容

什么是新的?

  • list() 有一个新的速记
  • list() 支持命名键

list() 的简写

$array = [3,5,1];
[$a, $b, $c] = $array;

用于命名键

$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
['a' => $a, 'b' => $b, 'c' => $c] = $fruit;

// $a = 'apple'
// $b = 'banana';
// $c = 'cranberry';

来源:PHP列表()

于 2019-05-04T05:44:02.597 回答