PHP foreach循环使用详解与实例代码

2015-01-24信息快讯网

在PHP中的foreach是用来进行循环对一个数组的所有元素。

foreach基本语法如下:
FOREACH ($array_variable as $value)
{
[code to execute]
}
or
FOREACH ($array_variable as $key => $value)
{
[code to execute]
}
在这两种情况下,多次[代码执行]将被处死是等于在$ array_variable数组元素的个数。
让我们来看一个例子。假设我们有下面的代码段:
 
$array1 = array(1,2,3,4,5); 
FOREACH ($array1 as $abc) 
{ 
print "new value is " . $abc*10 . "<br>"; 
} 

输出结果
new value is 10
new value is 20
new value is 30
new value is 40
new value is 50
foreach循环以上经历了所有5个元素的数组$ array1,每次打印出一份声明中含有10倍的数组元素的值。
foreach作用是遍历当前数组的所有值出来并且赋给$var
官方给出的实例代码:
 
<?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"; 
} 
?> 

再来看一个foreach 对多维数据操作实例
 
$s = array(array(1,2),array(3,4),array(5,6)); 
foreach( $s as $v => $_v ) 
{ 
foreach( $_v as $vc => $_vc ) 
{ 
echo $_vc[0],'|'.$_vc[1],'<br />'; 
//print_r($_vc); 
} 
} 

先来看一下foreach的语法:
 
foreach ($array as $key=>$value) 
{ 
…… 
} 

为了便于理解,我们假定这里的$array是一个一维的相关数组,$key是数组的索引,$value是这个索引的值,它们的名字可以随意,之所以叫$key和$value是为了便于理解。为了能让你更好的理解foreach的工作过程,我们来创建一个数组:
$array = array('first'=>'ibm','second'=>'hp');
现在我们模拟PHP服务用foreach对$array进行遍历:
 
foreach ($array as $key=>$value) 
{ 
echo $key.'=>'.$value; 
} 

第一次循环,$key = 'first',$value = 'ibm',这个时候,实际foreach对$array执行了一个我们看不见的操作:next($array),将数组指针向前(这里的“向前”跟PHP手册相同,不是我们通常所理解的“向前”)移一。然后echo语句输出"first=>ibm"。
第二次循环,首先会判断数组$array的当前指针是否已经到了数组的末尾,如果是,结束循环,否则进入第二次循环。当然这样的判断在进入第一次循环的时候也会有,如果$array是一个空数组,那么就会直接执行循环下面的语句。此时,$key = 'second','value' = 'hp',next($array)后,输出"second=>hp"。然后进行判断,数组指针已经到达末尾,执行下面的语句。
到这里你应该对foreach循环有所了解了吧?还有一点需要的是,foreach每次只是传递一个值,而不是真的对数组元素进行操作。具体到上面的例子,如果你想在每个数组元素的后面加上 'company' 这个字符串,那么$value .= 'company'这样的操作是不行的,它并不会改变数组元素的值,这个时候你应该这样用:$array[$key] .= 'company';

更多可以参考:php foreach
php foreach、while性能比较
php 循环
Sorting Array Values in PHP(数组排序)
php正则表达式(regar expression)
PHP正确配置mysql(apache环境)
PHP MySQL应用中使用XOR运算加密算法分享
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
兼容firefox,chrome的网页灰度效果
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
php中用foreach来操作数组的代码
PHP 字符串正则替换函数preg_replace使用说明
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
php设计模式 Chain Of Responsibility (职责链模式)
php判断输入不超过mysql的varchar字段的长度范围
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
用PHP的超级变量$_GET获取HTML表单(Form) 数据
php 获取select下拉列表框的值
php 在文件指定行插入数据的代码
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
PHP中冒号、endif、endwhile、endfor使用介绍
asp.net Repeater控件的说明及详细介绍及使用方法
Windows下安装Memcached的步骤说明
来自phpguru得Php Cache类源码
php cache类代码(php数据缓存类)
php array_search() 函数使用
ajax+php打造进度条代码[readyState各状态说明]
Fatal error: Call to undefined function curl_init()解决方法
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
DedeCMS dede_channeltype表字段注释
php echo()和print()、require()和include()函数区别说明
Smarty Foreach 使用说明
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
ajax+php打造进度条 readyState各状态
php Smarty date_format [格式化时间日期]
php foreach 使用&(与运算符)引用赋值要注意的问题
©2014-2024 dbsqp.com