list,each联用遍历数组

目录

一: list函数

二: each函数

三: list 和each 配合


一: list函数

1.语法:

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

请注意:索引数组的一一对应原则,list第一个变量对应的是下标为0的数组元素,下标为1的对应的是list里面的第二个数组元素;

2.功能:

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

3.eg:

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

效果:

$one----张三
$two----李四
$three----王五

结论:

  • 将下标为0的张三赋值给了$one
  • 将下标为1的李四赋值给了$two
  • 将下标为2的王五赋值给了$three

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

4.list的另外一种用法:

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

效果:


Notice: Undefined variable: one in D:\wwwroot\test\test.php on line 5
$one----

Notice: Undefined variable: two in D:\wwwroot\test\test.php on line 6
$two----
$three----王五

结论:

  • list当中的第一、二个放变量的地方留空,我只写了$three。
  • 按照一一对应原则,张三和李四没有变量可以对应。
  • 所以只有王五有变量对应

5.eg:

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

效果:


Notice: Undefined offset: 1 in D:\wwwroot\test\test.php on line 2

Notice: Undefined offset: 0 in D:\wwwroot\test\test.php on line 2
$one----
$two----
$three----张三

总结:

    1.因为是一一对应原则,$one找不到下标为0的数组元素,$two找不到下标为1的数组元素,只有$three找到了下标为2的数组元素

    2.在list($one, $two, $three),我只写了三个变量。对应完成,无需再对应后面的变量了,丢弃李四和王五。

 

二: each函数

1.语法:

array each ( array &$array )

2.功能:

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

3.eg:

<?php
//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'退特别长特别细',
   'mei'=>'好白',
   'pl'=>'五官端正',
   'type'=>'那就是女神',
   '我是吊丝不敢跟女神搭讪'
   ];
//第一次each
$data = each($kongjie);
echo '<pre>';
var_dump($data);

?>

效果:

array(4) {
  [1]=>
  string(15) "穿黑衣服的"
  ["value"]=>
  string(15) "穿黑衣服的"
  [0]=>
  string(3) "gao"
  ["key"]=>
  string(3) "gao"
}

总结

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

2).分解后第一个元素变成了一个新数组。

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

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

图片展示:

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

<?php
//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'退特别长特别细',
   'mei'=>'好白',
   ];

//第一次each
$data = each($kongjie);

echo '<pre>';
var_dump($data);
echo '</pre>';

echo '-----华丽丽分割线------<br />';

//第2次each
$data = each($kongjie);

echo '<pre>';
var_dump($data);
echo '</pre>';

echo '-----华丽丽分割线------<br />';

//第3次each【执行到了最后一个元素了】
$data = each($kongjie);

echo '<pre>';
var_dump($data);
echo '</pre>';

echo '-----华丽丽分割线------<br />';

//第4次【此时,后面已没有可操作的元素了,看返回什么】
$data = each($kongjie);

echo '<pre>';
var_dump($data);
echo '</pre>';

echo '-----华丽丽分割线------<br />';

?>

效果:

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"
}
-----华丽丽分割线------
bool(false)
-----华丽丽分割线------

总结:

  • 读一次向后移动一次【可以想象有一个记录的箭头在移动】,将其中的每个元素拆解成一个新数组
  • 读取到最后,没有可操作的元素了,所以返回了false。

三: list 和each 配合

1.配合结构:

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

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

2.eg:

<?php
//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'腿特别长特别细',
   'mei'=>'好白',
   ];

list($key,$value) = each($kongjie);
echo $key. '-----' .$value .'<br />';
list($key,$value) = each($kongjie);
echo $key. '-----' .$value .'<br />';
list($key,$value) = each($kongjie);
echo $key. '-----' .$value;

?>

效果:

gao-----穿黑衣服的
shou-----腿特别长特别细
mei-----好白

总结:

    1).each 把变量拆成了4个元素

    2).而list把0 =>gao 赋值给了变量$key

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

    4).each到最后会返回false,因此我可以用布尔型循环while来配合完成数组的循环。

3.eg:

<?php
//定义一个变量叫$kongjie(空姐)
$kongjie=[
   'gao'=>'穿黑衣服的',
   'shou'=>'退特别长特别细',
   'mei'=>'好白',
   ];

while(list($key,$value) = each($kongjie)){
   echo $key. '-----' .$value .'<br />';
}
?>

效果:

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

总结:

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

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值