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 相关文章推荐
Smarty+QUICKFORM小小演示
Feb 25 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
坏狼的PHP学习教程之第2天
Jun 15 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
PHP 命令行参数详解及应用
May 18 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
Mar 25 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
php pdo连接数据库操作示例
Nov 18 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 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
JS Math对象与Math方法实例小结
2019/07/05 Javascript
JS实现滑动插件
2020/01/15 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
python 返回一个列表中第二大的数方法
2019/07/09 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
大一学生假期实习的自我评价
2013/10/12 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
python xlwt模块的使用解析
2021/04/13 Python