class test
  {
      public $val='test';
  }
 
  $test1=new test();
  $test2=bew test();  if($test1==$test2)
  {
      echo '两者相等';
  }
   
    很奇怪这样的结果,在C#等编程语言中,这两者应该是不一样的,因为是各自实例化对象,  在PHP中为什么会是相等的呢?请教各位大侠,谢谢!

解决方案 »

  1.   


    非常感谢,试了,确实是这样,但是问题又来了,如果是在函数中传递参数呢?
    function test(test $aa)
      {
       echo $aa->aaa;
      }
    $aa参数传递的时候是按引用还是按值传递呢?加与不加'&'有区别吗?
      

  2.   

    还是说它根据类型来进行判断,如果是值类型那么就按值类型,如果是引用类型就按引用类型,php5以后已经不再区分加'&'与不加'&'了
      

  3.   

    感觉我把问题都搞混了,刚试了一下,好像已经不建议使用'&'来进行参数传递,是不是值类型和引用类型在PHP5以后都可以自动识别了?
      

  4.   

    &表示值引用function test(&$args)
    {
     $args += 1;
    }
    $args = 4;
    test($args);
    echo $args ;
    function test($args)
    {
     $args += 1;
    }
    $args = 4;
    test($args);
    echo $args ;