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实现ping
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
如何删除多级目录
Oct 09 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
php限制ip地址范围的方法
Mar 31 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
PHP实现的多进程控制demo示例
Jul 22 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目录导航文件代码
2006/10/09 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
json 带斜杠时如何解析的实现
2019/08/12 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python如何安装第三方模块
2020/05/28 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
班组长安全职责
2014/01/05 职场文书
网络研修随笔感言
2014/02/17 职场文书
故意杀人案辩护词
2015/05/21 职场文书
迎新年主持词
2015/07/06 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
Python代码实现双链表
2022/05/25 Python
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python