各位好.今天遇到了个问题,可能是我基础知识不够扎实,但试了很多方法,都失败了,一个应该是比较基础的问题.和数组和指针有关系...假设我有一个CLASS.命名class_a调用时$a=new class_a(); //一般都是这样的
$b=$a->aa(1); //调用a类中的aa方法,请不要理会aa方法的内容其中,aa方法返回的值,是一个数组,也就是说打印(print_r)后,$b 的内容是array('num'=1,'data'=2)现在问题来了...
我想实现可以直接将aa方法中的data直接赋值给$b,可通过以下代码实现
$a=new class_a(); 
$b=$a->aa(1); 
$b=$b['data'];
但我想用单行实现.也就是$b=$a->aa(1)['data'] 这样的方式...但PHP报错...
我也试了$b=($a->aa(1))['data'];这样的方法...还是报错...查了很多资料,也没头绪.请教我上面的$b=$a->aa(1)['data']应该如何实现.

解决方案 »

  1.   

    把 php 升级到 5.4.x 后 $b=$a->aa(1)['data'] 就是正确的了
      

  2.   

    你让aa方法,返回data值不就可以了
      

  3.   

    class class_a{
    function aa(){
    //..........
    }
    function bb(){
    return (object)$this->aa();
    }
    }$a = new class_a();
    $b = $a->bb()->data;
      

  4.   

    话说,如果这个数据结构不是有序的话,我更倾向于用object替代array
      

  5.   


    用object代替 有什么好处么? 没用过 想学习下
      

  6.   

    因为在5.4以下的版本中更灵活.
    你可以使用
    $class->func()->sth
    的形式获取值
    而不用上面那样多出几个东西,还可以使用链式语法.
    以上意见仅供参考.
      

  7.   


    这样的话.那返回中的num值就得另外用其他方法得到了...
      

  8.   

    当然!正因为由此需求,所以php5.4增加了该语法
    echo phpversion() . '<br>';class class_a {
      function aa() {
        return array('num' => 1, 'data' => 2);
      }
    }$a=new class_a(); 
    echo $a->aa(1)['data'];
    5.4.3
    2不要尝试不可能做到的事情!