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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
如何在PHP中使用Oracle数据库(1)
Oct 09 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
php中设置多级目录session的问题
Aug 08 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
Smarty模板变量调节器用法分析
May 23 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php操作redis命令及代码实例大全
Nov 19 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
通用PHP动态生成静态HTML网页的代码
2010/03/04 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
javascript 动态添加表格行
2006/06/22 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
python中for用来遍历range函数的方法
2018/06/08 Python
Python实现多线程的两种方式分析
2018/08/29 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
积极分子思想汇报
2014/01/04 职场文书
安全检查管理制度
2014/02/02 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
婚纱店策划方案
2014/05/22 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2014年防汛工作总结
2014/12/08 职场文书
教师业务学习材料
2014/12/16 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
辩论赛新闻稿
2015/07/17 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS