PHP效率开发--数组中的引号

来源:互联网 发布:2型补偿网络 编辑:程序博客网 时间:2024/06/05 10:39

PHP效率开发--数组中的引号

数组概述

       数组,作为一种简单的线性数据结构,在程序开发的过程中时常会被用到。PHP将数组分为两类:数值数组和关联数组。

       数值数组和大多数其它语言的使用方法一样:在一对中括号中加上一个数字表示要存取的值在数组中的存放位置。例如:$array[0] = ”value”

       关联数组是PHP的一大亮点,它通过使用字符串来索引数组,例如在某个水果销售系统中,我们要为几种水果指定价格,于是我们可以这样写:$price[‘Apple’] = 1.8; $price[‘Banana’] = 4.6; $price[Pear] = 2.8; $price[Other] = 0.5;

 

问题出现

       从上面的例子可以看出关联数组使得我们的代码更加清晰,同时在很大程度上提高了开发效率。细心的可能会发现在我们举例关联数组时,前两个数组中(AppleBanana)的字符串索引我们加上了单引号,而后面两个(PearOther)则没有!是的,为了提高开发效率,PHP允许我们在使用关联数组时不必给数组的索引字符串加上引号。这确实给我们带来了很大的方便:首先PHPer不必在每次写数组时都要记得加上烦人的引号;其次可以避免引号配对问题。不过这带来了另外的一个问题――性能。在接下来的文章中我们将通过例子来解释这个现象。

性能测试

性能和效率之间似乎总是呈反比的,有时为了效率我们必须牺牲性能,有时有不得不反过来,不过在这里我们应该选择哪个呢?先看下面的代码:



<?

       
//定义一个存放临时数据的文件

       
$fp=fopen('delete.txt','w');

       
//初始化数组

       
$array=array('name'=>'value');

       
//定义循环次数

       
$LOOPTIMES=100;

       
//得到初始时间

       
$t0=number_format(microtime(true),10,'.','');

       
//循环显示没有使用引号的数组

       
for($i=0;$i<$LOOPTIMES;$i++)

              
fputs($fp,$array[name]);

       
$t1=number_format(microtime(true),10,'.','');

       
$rs1=$t1-$t0;

       
//循环显示使用了引号的数组

       
for($i=0;$i<$LOOPTIMES;$i++)

              
fputs($fp,$array['name']);

       
$t2=number_format(microtime(true),10,'.','');

       
$rs2=$t2-$t1;

//     显示结果

       
echo "$t1 - $t0 = ".$rs1." ";

       
echo "$t2 - $t1 = ".$rs2." ";

       
fclose($fp);

?>

 

上面的代码分别循环100次使用大引号的关联数组和不代引号的关联数组,最后输出它们所消耗的时间。下图显示了允许程序10次后的结果:

 

10次的测试中,使用引号所花费的平均时间为0.003,而没使用引号的平均时间为0.032911,大约是前者的10倍!

总结

       从上的例子中可以看出:不使用引号的关联数组所带来的优点比较起来其,在关联数组中使用引号将使得程序的性能得到很大的提升。而且由于有了像Zend这样优秀的PHP集成开发环境,它不仅能为PHP字符串自动添加引号,而且配备了出色的代码检查功能。这使得我们更没有理由继续使用没有引号的关联数组。

 
原创粉丝点击