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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
让你的网站首页自动选择语言转跳
Dec 06 PHP
php中处理模拟rewrite 效果
Dec 09 PHP
php 字符转义 注意事项
May 27 PHP
PHP CURL获取cookies模拟登录的方法
Nov 04 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 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中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
CI框架表单验证实例详解
2016/11/21 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
js制作提示框插件
2020/12/24 Javascript
python之import机制详解
2014/07/03 Python
Python中的各种装饰器详解
2015/04/11 Python
利用aardio给python编写图形界面
2017/08/21 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python 负数取模运算实例
2020/06/03 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
烹饪大赛策划方案
2014/05/26 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
工作作风建设心得体会
2014/10/22 职场文书
公证处委托书
2015/01/28 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL