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 无限分类的树类代码
Dec 03 PHP
PHP学习笔记之二 php入门知识
Jan 12 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
简单的php文件上传(实例)
Oct 27 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
php实现登陆模块功能示例
Oct 20 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
apache php mysql开发环境安装教程
2016/07/28 PHP
js表格分页实现代码
2009/09/18 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
python 全文检索引擎详解
2017/04/25 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
django orm模块中的 is_delete用法
2020/05/20 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
公务员的自我鉴定
2013/10/26 职场文书
安全生产管理责任书
2014/04/16 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python