2

この効果を達成したい:

class Foo {
   public $bar; // array('aaa' => array('bbb' => 'ccc'))
   public function __get($value)
   {
      return $this->bar[...][key($value)]; // don't know what to implement here
   }
}

$obj = new Foo();
$obj->aaa['bbb']; // should return 'ccc'

これは可能ですか?これどうやってするの?

このように呼び出したい場合、__ get()メソッドの内部からFoo :: $ bar配列から'ccc'値を取得するにはどうすればよいですか?

4

4 に答える 4

4

これを試して:

<?php
class Foo {
    public $bar = array('aaa' => array('bbb' => 'ccc'));
    public function __get($value) {
        return $this->bar[$value];
    }
}

$obj = new Foo();
echo $obj->aaa['bbb'];

戻ります:

ccc
于 2012-11-29T15:03:19.007 に答える
1
class Foo {
   public $bar = array('aaa' => array('bbb' => 'ccc'));
   public function __get($value)
   {
      return $this->bar[$value];
   }
}

$obj = new Foo();
var_dump($obj->aaa['bbb']);

編集後に欲しいものを手に入れました。

于 2012-11-29T14:58:39.213 に答える
1
<?php

class Foo 
{
    // note you had: array('aaa' => array('bbb', 'ccc'));
    // so `bbb` and `ccc` were values, not keys.
    public $bar = array('aaa' => array('bbb' => 'ccc'));

    public function __get($name)
    {
        return $this->bar[$name];
    }
}

$obj = new Foo();
echo $obj->aaa['bbb']; // should return 'ccc'

// output: ccc
于 2012-11-29T15:03:54.337 に答える
1

質問の言い回しからはわかりませんが、これがあなたが探しているものかもしれないと思いますか?

<? 
class Foo {
    function __construct(){
        $bar = array(
            'aaa' => array('bbb' => 'ccc'),
            'zzz' => array('yyy' => 'xxx'),
        );
        foreach($bar as $key => $value){
            $this->{$key} = $value;
        }
    }
    public function __get($value){
        // return $this->bar[...][key($value)]; // don't know what to implement here
    }
}

$obj = new Foo();
echo $obj->aaa['bbb']; // ccc
echo $obj->zzz['yyy']; // xxx
于 2012-11-29T15:05:51.920 に答える