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 相关文章推荐
set_include_path在win和linux下的区别
Jan 10 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php目录操作实例代码
Feb 21 PHP
PHP合并静态文件详解
Nov 14 PHP
Yii分页用法实例详解
Dec 04 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
php parse_str() 函数的定义和用法
May 23 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php中目录,文件操作详谈
2007/03/19 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
js实现无缝轮播图
2020/03/09 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Python常见数据类型转换操作示例
2019/05/08 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
九年级数学教学反思
2014/02/02 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
实习科室评语
2015/01/04 职场文书
2015年考研复习计划
2015/01/19 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
MySQL时间盲注的五种延时方法实现
2021/05/18 MySQL