设为首页
收藏本站
最新电影
您现在的位置: 首页=>后台技术=>php 订阅本栏目  
php中foreach函数定义、解释、用法
时间: 2009-09-21 19:32:50 阅读次数:2451


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


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


第一种格式遍历给定的 array_expression 数组每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)飞飞Asp技术,乐园
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

自PHP 5 起,还可能遍历对象
注: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元这意味着不需要在 foreach 循环之前调用 reset()

注: 除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组飞!飞Asp技术乐园不过原数组的内部指针的确在处理数组的过程中向前移动了假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾
自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的单元飞飞Asp~技术乐园此方法将以引用赋值而不是拷贝一个值[table]
<?php
$arr
= array(1, 2, 3, 4
);
foreach (
$arr as &$value
) {
$value = $value * 2
;
}
// $arr is now array(2, 4, 6, 8)
?>


此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)
注: foreach 不支持用“@”来抑制错误信息的能力




用户可能注意到了以下的代码功能完全相同:


<?php
$arr
= array("one", "two", "three"
);
reset($arr
);
while (list(,
$value) = each($arr
)) {
echo
"Value: $value<br>\n"
;
}

foreach (
$arr as $value
) {
echo
"Value: $value<br />\n"
;
}
?>



以下代码功能也完全相同:


<?php
$arr
= array("one", "two", "three"
);
reset($arr
);
while (list(
$key, $value) = each($arr
)) {
echo
"Key: $key; Value: $value<br />\n"
;
}

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



示范用法的更多例子:

<?php
/* foreach example 1: value only */

$a = array(1, 2, 3, 17
);

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

/* foreach example 2: value (with key printed for illustration) */

$a = array(1, 2, 3, 17
);

$i = 0;
/* for illustrative purposes only */

foreach ($a as $v
) {
echo
"\$a[$i => $v.\n"
;
$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.\n"
;
}

/* 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\n"
;
}
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v
) {
echo
"$v\n"
;
}
?>




站内搜索    

下一篇PHP中单引号和双引号的区别

上一篇ecshop 2.7.数据字典+常用技巧

本栏目最新 栏目最新列表
50个新鲜兼容最新版本的免费WordPress主题
zend studio 添加spket ide的方法,绝对能用
zend studio 字体配色方案修改的方法
css浮动的详细讲解
Windows(iis)下的Memcache安装方法(安装文件
网站优化策划 栏目最新列表
增加网站外链的快速方法
网站上线前必做的30个检查
新的友情链接参考标准(没有google的PR情况
优化Google的AdSense广告的五个工具
王通讲SEO八大基础
站点最新 站点最新列表
微博推广的一些技巧
xhEditor v1.1.7 发布,
收集的一些轻量级非常实
50个新鲜兼容最新版本的
javascript中cookie的设
Excel中出现#VALUE!、#D
jquery插件:飞飞表情插件
十个使用HTML5开发的精彩
支持HTML5的浏览器有哪些
飞妮莫属:漫画:如何写出
历史最热10条信息  
MIME介绍 及 [1] [2] [3]
巧用Google和迅雷来下载
Transact SQL 常 [1] [2]
VIA Rhine II Fast Ethe
电脑常用端 [1] [2] [3]
Do you get a kick out
十道羊皮卷 欣赏+mp3版+
每日一句:A friend and
每日一句:Theres no tu
经典__悟透JavaScript
 width= 
伟哥博客 西安房产 123最新电影 三四六四