PHP foreach()

PHP foreach()

语法格式

  1. 只要键值
    foreach( $数组名 as $自定义键值名){
    #代码块部分数组有多少个元素便执行几次

    }

$arr = ["姚明","路飞","黄家驹"];
foreach($arr as $value){
	echo $value;		//依次打印出$arr的键值
}
  1. 要键名又要键值
    foreach( $数组名 as $自定义键名 => $自定义键值){
    #代码块部分数组有多少个元素便执行几次

    }

$arr = ["姚明","路飞","黄家驹"];
foreach($arr as $key => $value){
	echo "键名",$key,"<br>";
	echo "键值",$value,"<br>";		
}
  1. 可以通过:(冒号)和endforeach代替 {}
$arr = ["姚明","路飞","黄家驹"];
foreach($arr as $key => $value):
	echo "键名",$key,"<br>";
	echo "键值",$value,"<br>";		
endforeach;

PHP7.0.x下foreach新特性

  1. **foreach不在改变内部数组指针。**在PHP7之前,当数组通过foreach迭代时,数组指针会移动。7.0之后不再如此
<?php
$array = [0, 1, 2];
foreach ($array as &$val) {
    var_dump(current($array));
}
?>

​ //PHP5

int(1)
int(2)
bool(false)

​ //PHP7

int(0)
int(0)
int(0)
  1. foreach通过值遍历时,操作的值为数组的副本

    • 在PHP7.0.x,当默认使用通过值遍历数组时,foreach实际操作的是数组的迭代副本,而非数组本身。这就意味着,foreach 中的操作不会修改原数组的值。
  2. foreach通过引用遍历时,有更好的迭代特性

    • 当使用引用遍历数组时,现在 foreach在迭代中能更好的跟踪变化。
<?php
$array = [0];
//通过给形参数组值加&引用实际数组值做到实时读写
foreach ($array as &$val) {	
    var_dump($val);
    $array[1] = 1;
}
?>

​ //php5

int(0)

​ //php7

int(0)
int(1)

猜你喜欢

转载自www.cnblogs.com/zylm/p/12573384.html