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安装全攻略:APACHE
Oct 09 PHP
逐步提升php框架的性能
Jan 10 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
php利用curl抓取新浪微博内容示例
Apr 27 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
php保存信息到当前Session的方法
Mar 16 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
php实现微信模板消息推送
Mar 30 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 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
FCKeditor的安装(PHP)
2007/01/13 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
php广告加载类用法实例
2014/09/23 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
台湾家适得:Homeget
2019/02/11 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
学用政策心得体会
2014/09/10 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
法定代表人资格证明书
2015/06/18 职场文书
运动员入场词
2015/07/18 职场文书
优秀创业计划书分享
2019/07/19 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Python音乐爬虫完美绕过反爬
2021/08/30 Python
用JS写一个发布订阅模式
2021/11/07 Javascript
解决Oracle数据库用户密码过期
2022/05/11 Oracle
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers