-3

PHP 5.4 を使用しています。私のクラスのデータベース クエリのほとんどは、結果をオブジェクトとして返します。配列ではなくオブジェクトを返すように変換しているクエリがいくつかあります。私が変換しているクエリの 1 つは、アプリケーションでかなり使用しました。通常、一度にアクセスする必要がある項目は 1 つだけであり、その配列項目にアクセスするための簡易メソッドを使用します。

echo $this->analysis->get_meta_data()['member_id'];

オブジェクトを含む配列から単一の結果のみを取得するために、この同じ方法を使用する方法はありますか? 私は試した:

echo $this->analysis->get_meta_data()->member_id;

...うまくいくと思ったのですが、エラーしかありませんでした。配列からできるのと同様の方法で、オブジェクトから個々の項目を返すことができるかどうかわかりませんでした。ありがとう!

var_dump:

object(stdClass)#23 (72) {
  ["id"]=>
  string(3) "31734"
  ["member_id"]=>
  string(1) "2233"
  ["entity_name"]=>
  string(15) "Tester, Test"
  ["create_date"]=>
  string(10) "11/13/2012"
  ["create_user_id"]=>
  string(1) "1"
  ["status_id"]=>
  string(1) "1"
  ...
}
4

2 に答える 2

3

関数からのArrayObject代わりにを返すことができ、両方の長所を活かすことができますstdClassget_meta_data()

function get_meta_data()
{
     // your existing code building an array

     // ..

     // hand array to ArrayObject, telling it to also allow array keys to be accessed as properties

     return new ArrayObject($array, ArrayObject::ARRAY_AS_PROPS);

}
//Either method should now work

echo $this->analysis->get_meta_data()['member_id']; 
echo $this->analysis->get_meta_data()->member_id;   
于 2012-11-30T16:03:24.613 に答える
0

配列を反復処理するメソッドを作成できます。そして、反復ごとに、インデックスを移動します。

これを行うこともできます:

    get_meta_data() {

         $obj->member_id = $var["member_id"];
         return $obj;

    }
}
class Obj {

    var $member_id;

}

私はあなたがすでにクラスのどこかにいる$objと仮定しています。$var

于 2012-11-30T15:55:44.457 に答える