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 读取和修改大文件的某行内容的代码
Oct 30 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP return语句的另一个作用
Jul 30 PHP
PHP加密解密类实例分析
Apr 20 PHP
php获取错误信息的方法
Jul 17 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
php回调函数处理数组操作示例
Apr 13 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
php实现删除空目录的方法
2015/03/16 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JS hashMap实例详解
2016/05/26 Javascript
Ionic快速安装教程
2016/06/03 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
js中this对象用法分析
2018/01/05 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python实现在sqlite动态创建表的方法
2015/05/08 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
工程专业求职自荐书范文
2014/02/08 职场文书
大学军训感言1000字
2014/02/25 职场文书
《长征》教学反思
2014/04/27 职场文书
《恐龙》教学反思
2014/04/27 职场文书
责任书范本
2014/08/25 职场文书
2014年幼师工作总结
2014/11/22 职场文书
雷锋电影观后感
2015/06/10 职场文书