PHP数组循环操作详细介绍 附实例代码


Posted in PHP onFebruary 03, 2013

PHP数组还是比较常用的,于是我研究了一下PHP数组循环操作,在这里拿出来和大家分享一下,希望对大家有用。PHP基本上就是一种数组语言。时常要进行大量的PHP数组循环操作,主要有两种方式,一种是foreach,另一种是while,到底哪种好哪种坏一直有争论,虽然我很早就意识到了这个问题,但是一直没有细究,懵懂的感觉一直持续到现在,为了以后能节省点CPU时间,下面总结一下:

在循环里进行的是数组“读”操作,则foreach比while快,PHP数组循环操作无格式查看复制到剪贴板打印代码?

foreach($arrayas$value){ 
echo$value; 
} 
while(list($key)=each($array)){ 
echo$array[$key]; 
} 
foreach($arrayas$value){ 
echo$value; 
} 
while(list($key)=each($array)){ 
echo$array[$key]; 
}

在循环里进行的是数组“写”操作,则while比foreach快:

无格式查看复制到剪贴板打印代码?

foreach($arrayas$key=>$value){ 
echo$array[$key]=$value.'...'; 
} 
while(list($key)=each($array)){ 
$array[$key]=$array[$key].'...'; 
} 
foreach($arrayas$key=>$value){ 
echo$array[$key]=$value.'...'; 
} 
while(list($key)=each($array)){ 
$array[$key]=$array[$key].'...'; 
}

总结:通常认为,foreach涉及到值复制,一定会比while慢,但实际上,如果仅仅是在循环里进行数组的读操作,那么foreach是很快的,这是因为PHP采用的复制机制是“引用复制,写时拷贝”,这样看来,foreach的高效读操作就不难理解了。另外,既然foreach不适合处理数组写操作,那么我们可以得出一个结论,多数情况下,类似foreach($arrayas$key=>$value)形式的代码都应该被替换成while(list($key)=each($array))。

这些技巧产生的速度差异在小项目里可能并不明显,但是在类似框架这样的大项目中,一次请求动辄便会涉及到几百几千几万次数组循环操作,差异就会明显放大。

有关php数组及循环的小例子,包括二维数组、杨辉三角、获取参数、矩形对角线求和,有需要的朋友建议看看

<?php
//1、使用循环语句,输出任意一个二维数组 。
$arr=array(
array(1,2,3,4),
array(5,6,7,8),
array(9,10,11,12),
array(13,14,15,16)
);
foreach ($arr as $var){
foreach ($var as $val1){
echo "$val1 ";
}
echo "<br>";
}
echo "<br>";
//2、使用循环控制语句,输出杨辉三角。
function yanghuisanjiao($line){
$sc[][]=array();
$sc[0][0]=1;
for($i=1;$i<=$line;$i++){
for($j=0;$j<=$i;$j++){
if($j==0 or $i==$j){
$sc[$i][$j]=1; //把每行的第一个数字和最后一个数字设为1
}else{
$sc[$i][$j]=$sc[$i-1][$j-1]+$sc[$i-1][$j];
}
}
}
foreach ($sc as $value){
foreach($value as $v1){
echo $v1.' ';
}
echo '<p>';
}
}
yanghuisanjiao(5);
echo "<br>";
//3、使用循环和预定义变量,获取多个参数。参数的个数未定。
function avg(){
$ags=func_get_args();
$sum=0;
foreach ($ags as $v){
$sum+=$v;
}
return '平均值是:'.$sum/func_num_args();
}
echo avg(1,2,3,4,5,6,7);
//4、使用循环输出一个二维数组,并求该矩形对角线元素的和。
function getSum($theCount){
$b=0;
echo '</p>';
echo "<table>";
for($i=1;$i<=$theCount;$i++){
echo "<tr>";
for($j=1;$j<=$theCount;$j++){
   if($j==$i || $theCount+1-$i==$j){
    echo "<td style='color:#f00'>$j</td>";
    $b=$b+$j;
    if($j==$i && $theCount+1-$i==$j){
     $b=$b+$j;
    }
   }
   else{
    echo "<td>$j</td>";
   }
}
echo "</tr>";
}
echo "<table>";
echo "对角线元素之和为:".$b;
}
getSum(6);
?>
PHP 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
PHP+DBM的同学录程序(4)
Oct 09 PHP
一个好用的分页函数
Nov 16 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 #PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 #PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 #PHP
php存储过程调用实例代码
Feb 03 #PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 #PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 #PHP
php数组去重的函数代码
Feb 03 #PHP
You might like
消息持续发送的完整例子
2006/10/09 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php封装的smarty类完整实例
2016/10/19 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
Django 中 cookie的使用
2017/08/17 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
微信小程序录音与播放录音功能
2017/12/25 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python 装饰器深入理解
2017/03/16 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python中GIL的使用详解
2018/10/03 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
详解如何减少python内存的消耗
2019/08/09 Python
英文版餐饮业求职信
2013/10/18 职场文书
2014年保洁工作总结
2014/11/24 职场文书
班主任工作实习计划
2015/01/16 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
施工安全协议书
2016/03/22 职场文书
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang