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 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 PHP
关于file_get_contents返回为空或函数不可用的解决方案
Jun 24 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 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 无限级 SelectTree 类
2009/05/19 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
Ajax 数据请求的简单分析
2011/04/05 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
vue中的inject学习教程
2019/04/24 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
你应该知道的python列表去重方法
2017/01/17 Python
一张图带我们入门Python基础教程
2017/02/05 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
PyCharm中代码字体大小调整方法
2019/07/29 Python
如何使用python进行pdf文件分割
2019/11/11 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
自荐信如何制作?
2014/02/21 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP