php foreach 参数,PHP foreach循环

本文详细介绍了PHP中的foreach循环用法,包括两种基本格式及其示例。对比了PHP5和PHP7中foreach在遍历数组时的行为差异,特别是在循环中对数组的修改以及按值和引用循环时的影响。在PHP5中,foreach循环会影响数组内部指针,而在PHP7中则不会。此外,还展示了PHP5和PHP7中不同遍历方式导致的输出变化。
摘要由CSDN通过智能技术生成

PHP 中提供了 4 种循环控制语句,分别是 while、do while、for 和 foreach。本节只讲解 foreach 循环,其它 3 种循环请猛击以下链接学习:

//格式1

foreach (array_expression as $value){

statement

}

//格式2

foreach (array_expression as $key => $value){

statement

}

第一种格式遍历 array_expression 数组时,每次循环将数组的值赋给 $value;第二种遍历不仅将数组值赋给 $value,还将键名赋给 $key。

举例演示两种格式的不同:

$array = [0, 1, 2];

foreach ($array as $val){

echo "值是:" . $val ;

echo "
";

}

foreach ($array as $key => $value) {

echo "键名是:" . $key . "值是:" . $value;

echo "
";

}

?>

执行以上代码打印的结果是:

值是:0

值是:1

值是:2

键名是:0值是:0

键名是:1值是:1

键名是:2值是:2

foreach 在 PHP5 和 PHP7 中的区别

在 PHP 5 版本中,当 foreach 开始循环执行时,每次数组内部指针都会自动向后移动一个单元,但是在 PHP 7 中却不是这样。如下代码在 PHP 5 和 PHP 7 中的执行结果会有所不同。

$array = [0, 1, 2];

foreach ($array as $val){

var_dump(current($array));

}

?>

在 PHP 5 中的输出结果为:

int(0) int(1) int(2)

但在 PHP 7 中的输出结果却为:

int(0) int(0) int(0)

在 PHP 7 中,按照值进行循环时,foreach 是对数组的复制操作,在循环过程中对数组的修改不会影响循环行为,但在 PHP 5 中却会有影响。

$array = [0, 1, 2];

//$ref =& $array; // Necessary to trigger the old behavior

foreach ($array as $val) {

var_dump($val);

unset($array[1]);

}

?>

在 PHP 7 中的输出结果为:

int(0) int(1) int(2)

但在 PHP 5 中的输出结果却为:

int(0) int(2)

在 PHP 7 中按照引用循环的时候对数组的修改会影响循环,在 PHP 5 中 则不会改变。示例如下:

$array = [0];

foreach ($array as &$val) {

var_dump($val);

$array[1] = 1;

$array[2] = 2;

}

?>

在 PHP 7 中的运行结果是:

int(0) int(1) int(2)

但在 PHP 5 中的运行结果却是:

int(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值