foreach


foreach

PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。

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

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

自PHP 5 起,还可能遍历对象

Note:

foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()

Note:

除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在 foreach 循环中或循环后都不要依赖数组指针的值。

自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。 <?php
$arr 
= array(1234);
foreach (
$arr as &$value) {
    
$value $value 2;
}
// $arr is now array(2, 4, 6, 8)
?>
此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。 <?php
foreach (array(1234) as &$value) {
    
$value $value 2;
}

?>

Warning

Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

Note:

foreach 不支持用“@”来抑制错误信息的能力。

用户可能注意到了以下的代码功能完全相同: <?php
$arr 
= array("one""two""three");
reset($arr);
while (list(, 
$value) = each($arr)) {
    echo 
"Value: $value<br> ";
}

foreach (
$arr as $value) {
    echo 
"Value: $value<br /> ";
}
?>
以下代码功能也完全相同: <?php
$arr 
= array("one""two""three");
reset($arr);
while (list(
$key$value) = each($arr)) {
    echo 
"Key: $key; Value: $value<br /> ";
}

foreach (
$arr as $key => $value) {
    echo 
"Key: $key; Value: $value<br /> ";
}
?>

示范用法的更多例子: <?php
/* foreach example 1: value only */

$a = array(12317);

foreach (
$a as $v) {
   echo 
"Current value of $a: $v. ";
}

/* foreach example 2: value (with its manual access notation printed for illustration) */

$a = array(12317);

$i 0/* for illustrative purposes only */

foreach ($a as $v) {
    echo 
"$a[$i] => $v. ";
    
$i++;
}

/* foreach example 3: key and value */

$a = array(
    
"one" => 1,
    
"two" => 2,
    
"three" => 3,
    
"seventeen" => 17
);

foreach (
$a as $k => $v) {
    echo 
"$a[$k] => $v. ";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach (
$a as $v1) {
    foreach (
$v1 as $v2) {
        echo 
"$v2 ";
    }
}

/* foreach example 5: dynamic arrays */

foreach (array(12345) as $v) {
    echo 
"$v ";
}
?>


«  for
» break
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 县政府电子政务办2015年度工作总结 春节演讲稿范文 冠盖满京华下一句 夏夜的广场作文400字 雨雪情未了 游采石矶(秋游) 2015年世界肝炎日宣传活动方案 散文:茶思 县农业产业化经营 展板展览活动策划书 我愿做个哑巴 争做奋中文明教师 上巴河赋 别让'爱‘成“哎" 作文 龙的传说 懂黑的夜 忍受成功 石油公司企业党建工作经验材料 2015公司团年饭主持稿 李书福的经典语录 民警第一季度述职述廉汇报 可以不可以 愿天空降下的都是纷纷的微笑和热吻(陈癸钢、随笔) 西川的诗:在哈尔盖仰望星空 2012年县卫生系统双拥工作总结 离婚协议中赠与财产能否撤销? 快乐是树缝里的阳光,斑驳地洒落在生活中。 人类进步的阶梯700字 财政局社保工作总结 感受初三1200字 迎大运的作文 中学教育实习自我鉴定 《吴汉何尝杀妻》教案3 小学五年级作文900字:我的好外婆 2014应届毕业生面试自我介绍范文2分钟 做一个幸福的教师 静净的一片天 遗憾也是一种美作文300字 人生哲理英语句子 垫江县土地流转调查报告 九年级写事作文范文100字 洗碗工教育出来的世界状元 有关“杀鸡儆猴” 读《爱的教育》有感作文 观察日记——种小花300字 银行调度中心优秀党员推荐事迹材料 我的祖国我的家(国庆征文) 林中遐想 属于我们的光荣 居委会干部述职报告

Copyright © 2016 phpStudy |