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 相关文章推荐
MySQL修改密码方法总结
Mar 25 PHP
介绍php设计模式中的工厂模式
Jun 12 PHP
PHP 表单提交给自己
Jul 24 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
PHP系列学习之日期函数使用介绍
Aug 18 PHP
smarty中post用法实例
Nov 28 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
PHP实现简易blog的制作
Oct 24 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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/11/16 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP小技巧之函数重载
2014/06/02 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python简单I/O操作示例
2019/03/18 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
工程造价自荐信
2013/10/09 职场文书
大学四年规划书范文
2013/12/27 职场文书
金融专业求职信
2014/08/05 职场文书
幼儿园托班开学寄语(2015秋季)
2015/05/27 职场文书
简爱读书笔记
2015/06/26 职场文书