通过SELECT以及$rs = mysql_fetch_array($row)读取了数据~请问下面两种写法请问那一种对服务器负担较小呢?
写法1:$name = $rs[name];for ($i=1; $i=100; $i++){echo $name;}写法2:for ($i=1; $i=100; $i++){echo $rs[name];}
一种是直接读取数据库数据~一种是给变量赋了值后复制变量~请问那一种对服务器负担较小呢???望高人解答我的困惑~谢谢!

解决方案 »

  1.   

    同意楼上的。第二种for循环次数越多负担越大
      

  2.   

    一样,php有一个特性叫做:“写时拷贝”。
    $name = $rs[name]; 只是传了个引用给$name.
    echo $name时还是指到了$rs的地址空间。只是多了一个地址传递操作(32bit)。
    这里真正能提高性能的是$rs[name]=>写成$rs['name']数组内不加引号定义,会有一个经过一个变量与常量的分辨过程。
      

  3.   


    这样呢?:
    $name = $rs[name]; 
    unset($rs[name]);
    for ($i=1; $i=100; $i++){echo $name;} 
      

  4.   

    测试一下不就知道了<?php
    function get_microtime() {
    list($usec, $sec) = explode(' ', microtime());
    return ((float)$usec + (float)$sec);
    }
    $a=array();
    for ($i=0;$i<10000;$i++) {
    $a['key'.rand()] = 'xxxx';
    }
    $a['key1000'] = 'yyy';
    $t1 = get_microtime();
    $item=$a['key1000'];
    for ($i=0;$i<10000;$i++) {
    $y = $item;
    }
    $t2 = get_microtime();
    echo ($t2-$t1)."\n";
    $t1 = get_microtime();
    for ($i=0;$i<10000;$i++) {
    $y=$a['key1000'];
    }
    $t2 = get_microtime();
    echo ($t2-$t1)."\n";
    ?>执行结果
    0.0022048950195312
    0.0029168128967285方法1稍微快一点
      

  5.   


    完全理解错误,copy on write机制不是这么解释的