search
  • Sign In
  • Sign Up
Password reset successful

Follow the proiects vou are interested in andi aet the latestnews about them taster

首页课程PHP Fun Breakthrough ClassThe list and each functions traverse the array

The list and each functions traverse the array

目录列表

list函数

我们先来讲list函数。

list函数语法:

// list ( mixed $变量1 [, mixed $变量n ] )

它的功能:将索引数组下标为0的对应我变量1,下标1的对应变量2,依此类推。

我们来实验看看:

<?php

list($one , $two , $three) = array('张三' ,'李四' ,'王五');
//再次声明:单引号不结释变量,所以输出的是字符串$one
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three----'.$three.'<br />';
// 结果
/*
$one----张三
$two----李四
$three----王五
*/
?>

分析结果:

7Z2DBZTF4OLZRBQJLE1$Y7E.png

结论:

  • .将下标为0的张三赋值给了$one

  • 将下标为1的李四赋值给了$two

  • 将下标为2的王五赋值给了$three

因此,我们知道了list的功能就是从左到右,一一对应索引数组从0开始的下标值。

请严格记住:索引数组的一一对应原则。list第一个变量对应的是下标为0的数组元素,下标为1的对应的是list里面的第二个数组元素,对应的变量或数组值为空都会报错。

例如:

<?php
list( ,  , $three) = array('张三' ,'李四' ,'王五');
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three----'.$three.'<br />';
// 报错。
?>

填空,输出我的个人详细。

<?php ($name, $age, $sex) array('Lge' ,'20' ,'男'); echo '我的名字叫:'..'<br />'; echo '我的年龄是:'.$age.'<br />'; echo '我的性别是:'.$sex.'<br />'; ?>

each函数(了解)

each 函数的规律性上面就更有特点了,并且比较有趣。

语法:

// array each ( array &$array )

功能:传入一个数组。它会将其中的一个元素拆为个新数组。每次执行这样操作一个元素。执行一次先后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。

我们先来看看each是怎么操作的数组元素:

<?php

//定义一个变量叫$kongjie
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'腿特别长特别细',
   'mei'=>'好白',
   'pl'=>'五官端正',
   'type'=>'那就是女神',
   '我是吊丝不敢跟女神搭讪'
   ];
//第一次each
$data = each($kongjie);
echo '<pre>';
var_dump($data);
echo '</pre>';
//第一次each 结果:
/*
array(4) {
  [1]=>
  string(15) "穿黑衣服的"
  ["value"]=>
  string(15) "穿黑衣服的"
  [0]=>
  string(3) "gao"
  ["key"]=>
  string(3) "gao"
}
*/
?>

总结:

  • 读取了$kongjie中的第一个元素,将第一个元素('gao'=>'穿黑衣服的')分解开了。

  • 分解后第一个元素变成了一个新数组。

  • 在新数组里面,将原值(穿黑衣服的)放了索引下标1里面,同时放到了关联下标value里面。

  • 在新数组里面,将原键(gao),放到了关联下标key里面,放到了索引下标0里面。

如图所示:

JKQC)R)4E]@BNIEHY0Z`{X8.png

这样我们一下子就看明白了。

接下来我们说说each的另外一个特性。读一次,向后移动一个元素。

<?php

//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'退特别长特别细',
   'mei'=>'好白',
   ];
//第一次each
$data = each($kongjie);
echo '<pre>';
var_dump($data);
echo '-----华丽丽分割线------<br />';
//第2次each
$data = each($kongjie);
var_dump($data);
echo '-----华丽丽分割线------<br />';
//第3次each【执行到了最后一个元素了】
$data = each($kongjie);
var_dump($data);
echo '</pre>';

?>

结果:

/*
array(4) {
  [1]=>
  string(15) "穿黑衣服的"
  ["value"]=>
  string(15) "穿黑衣服的"
  [0]=>
  string(3) "gao"
  ["key"]=>
  string(3) "gao"
}
-----华丽丽分割线------
array(4) {
  [1]=>
  string(21) "退特别长特别细"
  ["value"]=>
  string(21) "退特别长特别细"
  [0]=>
  string(4) "shou"
  ["key"]=>
  string(4) "shou"
}
-----华丽丽分割线------
array(4) {
  [1]=>
  string(6) "好白"
  ["value"]=>
  string(6) "好白"
  [0]=>
  string(3) "mei"
  ["key"]=>
  string(3) "mei"
}
*/

总结:

  • 读一次向后移动一次【可以想象有一个记录的箭头在移动】,将其中的每个元素拆解成一个新数组

  • 读取到最后,没有可操作的元素了,就会返回了false,不想的同学可以试试哦。


填写正确答案!

<?php $student=[ 'xiaoming'=>'17', 'xiaoliang'=>'18', ]; $data = each($student); var_dump($data); ?>// [1] => "" [0] => ""

list 和each 配合(了解)

我们知道了list的特性,也知道了each的特性。那list是不是可以和each配合起来一起来完成一些工作呢?

例如:

// list($key,$value) = each($array);

而list中的第一个变量会去找索引下面0的元素去赋值,第二个变量会找索引下标为1的元素对变量赋值。

我们来看看下面例子:

<?php

//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'腿特别长特别细',
   'mei'=>'好白',
   ];
list($key,$value) = each($kongjie);
echo $key. '-----' .$value .'<br />';
// 结果:
/*
gao-----穿黑衣服的
*/

?>

总结:

  • each 把变量拆成了4个元素

  • 而list把0 =>gao 赋值给了变量$key

  • list把1 => 穿黑衣服的 赋值给了变量 $value

each到最后会返回false,因此我可以用布尔型循环while来配合完成数组的循环,下面我们看看使用循环的例子:

<?php

//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'退特别长特别细',
   'mei'=>'好白',
   ];
while(list($key,$value) = each($kongjie)){
   echo $key. '-----' .$value .'<br />';
}
// 结果:

/*
gao-----穿黑衣服的
shou-----退特别长特别细
mei-----好白
*/

?>

总结:

  • 循环一次,执行一次each,执行代码,然后向后移动一个元素

  • 执行到最后返回fasle,因此停止执行。

  • 可以通过each和list配合实现foreach一样的效果。

作为了解章节,不过在实际开发中可能也会用到哦!建议大家课后可以多多练习练习!

将下列排序修改正确。

  • list($key,$value) = each($admin);
  • ];
  • $admin=[
  • echo '我的名字:'.$key.'我的年龄:'.$value .'<br />';
  • 'lge'=>'20'