[PHP基础]使用each+list+while遍历数组

[PHP基础]使用each+list+while遍历数组

是滑稽啊
2021-05-30 / 0 评论 / 244 阅读 / 正在检测是否收录...

while()+list()+each() 遍历数组

要想使用 while()+list()+each() 必须要先搞明白list和each函数的作用。

each() 函数的作用:先取得一个数组的‘当前单元’的下标和值(并存放一个数组)

然后将指针移到下一个单元。

例如:

$a = array("bilibili", "youtube", "pornhub", "v2ex");
$arr1 = each($a);
$arr2 = each($a);
$arr3 = each($a);
$arr4 = each($a);

echo "<pre>";
print_r ($arr1);
echo "</pre>";

echo "<pre>";
print_r ($arr2);
echo "</pre>";

echo "<pre>";
print_r ($arr3);
echo "</pre>";

echo "<pre>";
print_r ($arr4);
echo "</pre>";

结果:

Array
(
    [1] => bilibili
    [value] => bilibili
    [0] => 0
    [key] => 0
)
Array
(
    [1] => youtube
    [value] => youtube
    [0] => 1
    [key] => 1
)
Array
(
    [1] => pornhub
    [value] => pornhub
    [0] => 2
    [key] => 2
)
Array
(
    [1] => v2ex
    [value] => v2ex
    [0] => 3
    [key] => 3
)

要注意的是each()函数已自 PHP 7.2.0废弃。强烈建议不要使用本函数。

list() 的作用:把数组中的值赋给一组变量

例如:

list($a,$b,$c,$d) =  array("bilibili", "youtube", "pornhub", "v2ex");
echo "我最喜欢的视频网站是".$a.',我也经常会去看'.
$b.'。<br />程序员网站'.$d.'。<br />'.$c.'只有老司机才会知道。';

结果:

我最喜欢的视频网站是bilibili,我也经常会去看youtube。
程序员网站v2ex。
pornhub只有老司机才会知道。

注意:

array() 一样,这不是真正的函数,而是语言结构。 list() 可以在单次操作内就为一组变量赋值。

在 PHP 7.1.0 之前的版本,list() 仅能用于数字索引的数组,并假定数字索引从 0 开始。

PHP 5 里,list() 从最右边的参数开始赋值; PHP 7 里,list() 从最左边的参数开始赋值。

如果你用单纯的变量,不用担心这一点。 但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但在 PHP 5 里实际上不是, 它是以相反顺序赋值的。

通常而言,不建议依赖于操作的顺序,在未来可能会再次发生修改。

最后结合使用来遍历数组

栗子:

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

注意例子中使用了一个reset()函数因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上边的例子中如果我们在循环内部将 $fruit 赋给了另一个变量的话将会导致无限循环。

2

评论

博主关闭了所有页面的评论