
PHP中有四个循环控制语句,即while,do while,for和foreach. 本节仅说明了foreach循环. 对于其他三个循环,请单击以下链接以学习:
PHP foreach循环结构是遍历数组时的常用方法. Foreach只能应用于数组和对象. 如果您尝试将其应用于其他数据类型的变量或未初始化的变量,则会发出错误消息.
foreach具有以下两种语法格式:
//格式1
foreach(将array_expression作为$值){
声明

}
//格式2
foreach(array_expression为$键=> $值){
声明
}
以第一种格式遍历array_expression数组时,每次将数组的值分配给$ value;第二次遍历不仅将数组值分配给$ value,而且将键名分配给$ key.
演示两种格式之间的区别:
<?php
$array = [0, 1, 2];
foreach ($array as $val){
echo "值是:" . $val ;
echo "<br/>";
//var_dump(current($array));
}
foreach ($array as $key => $value) {
echo "键名是:" . $key . "值是:" . $value;
echo "<br/>";
}
?>
执行上述代码打印的结果是:
值是:0 值是:1 值是:2 键名是:0值是:0 键名是:1值是:1 键名是:2值是:2
PHP5和PHP7中的foreach之间的区别在PHP 5版本中,当foreach开始循环时,每次数组的内部指针将自动移回一个单元,但是在PHP 7中则不是这种情况. 以下代码在PHP 5和PHP 7中的执行结果将有所不同.
<?php
$array = [0, 1, 2];
foreach ($array as $val){
var_dump(current($array));
}
?>
PHP 5的输出为:
int(0)int(1)int(2)
但是PHP 7的输出是:
int(0)整数(0)整数(0)
在PHP 7中,按值循环时,foreach是数组的复制操作. 在循环期间对数组的修改不会影响循环行为foreach,但是会在PHP 5中受到影响.
<?php
$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中foreach,对数组的修改将在引用周期时影响周期,但在PHP 5中,它将不会更改. 示例如下:
<?php
$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)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-203597-1.html
医生不行贿会好好给你看病吗
有你在我们大家都放心呀
等着你们的舞台回归秀