PHP foreach()函数访问数组

@[Toc](PHP foreach()函数访问数组)

1. 概述

通过each()函数和while()循环相结合,能逐一访问数组的全部元素;还能用foreach语句循环访问数组;
foreach()是一类特殊的循环语句,只适应数组(或对象);可用两种 不同的方式 使用foreach语句;
一种是用它读取每个元素的值,另一种是用它读取元素的键和值;

2. foreach 循环 访问数组中每个元素的值

最简单的方法是用foreach语句每个元素的值,用法如下所示:

foreach($array as $value){
//把$value放在这
}

foreach循环可从数组第一个元素直到最后一个元素,逐一访问数组的全部元素;
在某次循环过程中,$value变量被赋予当前元素的值,在循环体内,可根据反复循环执行,直到处理完数组的全部元素为止:
例子 :

<?php
$ble=array("酸菜鱼","剁椒鱼头","清汤鱼","鱼生");
foreach($ble as $val){
    echo $val."<br>";
}
?>

执行结果如下所示:
2021-10-31

3. foreach 循环 访问数组中元素的键和值

用foreach循环 同时读取数组中元素的键和值,要用到如下语法:

foreach($array as $key=>$value)
{
	//把$key 和$value 放在这
}

上述语法和之前的语法类似,区别在于:$key变量同时也存储了元素的键(这里的 $key和$value变量不是唯一的,必须使用$key 和$value变量,也可以使用其他变量来代替);
例子 :

<?php
$ble=array("酸菜鱼","剁椒鱼头","清汤鱼","鱼生");
foreach($ble as $key=>$value){
    echo "<dt>$key</dt>";
    echo "<dd>$value</dd>";
}
?>

执行结果如下所示:
2021-10-31

4. foreach 循环 修改数组中元素的值

使用foreach循环时,在循环体内处理的是数组元素的副本;即改变这个值,并不会改变原数组中相应的值
例子 :

<?php
$ble=array("酸菜鱼","剁椒鱼头","清汤鱼","鱼生");
foreach($ble as $val){
    if($val=="鱼生")$val="鱼丸";
    echo $val."<br>";
}
print_r($ble);
?>

虽然循环体内$val的值已从 “鱼生”改为“鱼丸”,但原来$ble数组中的值并没有发生变化,从最后一行print_r()的输出可以看出;
若想修改数组中元素的值,可用foreach()循环返回这个值的引用,而不是它的副本;即循环中的变量指向的是数组中的元素的值,要改变数组中元素的值,只需改变这个变量的值即可;
要返回数组中的元素的引用,只需在foreach语句的变量名前加&符号即可:

foreach($array as & $value){

例子 :

<?php

$ble=array("酸菜鱼","剁椒鱼头","清汤鱼","鱼生");
foreach($ble as $val){
    if($val=="鱼生")$val="鱼丸";
    echo $val."<br>";
}
unset($val);
print_r($ble);
?>

执行结果如下所示:
在这里插入图片描述

unset(&val)确保在循环结束后删除$val变量;因此,循环结束后,$val变量任然保存了最后一个元素的引用(即“鱼生”);
所以,复位或删除$val这个变量,可防止出现这个潜在的bug;

结束语

若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有什么错误的地方,欢迎大家指教。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值