web-dev-qa-db-ja.com

配列のオブジェクト(stdClassオブジェクト)メンバー/要素のプロパティにアクセスする方法は?

配列でprint_r()を実行すると、次の結果が得られます。

Array ( 
    [0] => 
        stdClass Object 
        ( 
            [id] => 25 
            [time] => 2014-01-16 16:35:17 
            [fname] => 4 
            [text] => 5 
            [url] => 6 
        ) 
)

配列内の特定の値にアクセスするにはどうすればよいですか?次のコードは、stdClassオブジェクトが原因で機能しません

echo $array['id'];
39
Alex

配列メンバーにアクセスするには、$array['KEY'];を使用します

オブジェクトメンバーにアクセスするには、$obj->KEY;を使用します

オブジェクトの配列内のオブジェクトメンバーにアクセスするには:
$array[0] //配列の最初のオブジェクトを取得します
$array[0]->KEY //その後、そのキーにアクセスします

次のようにオブジェクトの配列をループすることもできます。

foreach ($arrayOfObjs as $key => $object) {
    echo $object->object_property;
}

配列は物の集まりと考えてください。それはあなたがあなたの物を保管し、それらにユニークなID(キー)を与え、そのキーを使用してそれらにアクセスする(またはバッグから物を取り出す)ことができるバッグです。ここではシンプルにしたいのですが、このバッグには他のバッグも入れることができます:)

更新(これは誰かがよりよく理解するのに役立つかもしれません):

配列には、「key」と「value」のペアが含まれます。配列メンバーにキーを提供するかどうかはオプションです。この場合、0から始まり、メンバーが追加されるたびに1ずつ増え続ける数値キーが自動的に割り当てられます。配列から「値」を取得するには、「key」を使用します。

したがって、次の方法で配列を定義できます(キーに関して)。

最初の方法:

$colorPallete = ['red', 'blue', 'green'];

上記の配列には、自動的に数値キーが割り当てられます。したがって、赤に割り当てられたキーは0、青は1などになります。

上記の配列から値を取得する:

$colorPallete[0]; // will output 'red'
$colorPallete[1]; // will output 'blue'
$colorPallete[2]; // will output 'green'

2番目の方法:

$colorPallete = ['love' => 'red', 'trust' => 'blue', 'envy' => 'green']; // we expliicitely define the keys ourself.

上記の配列から値を取得する:

$colorPallete['love']; // will output 'red'
$colorPallete['trust']; // will output 'blue'
$colorPallete['envy']; // will output 'green'
75
Lucky Soni

これを試して、うまく動作します-

$array = json_decode(json_encode($array), true);
19
Rohit Suthar

これを試して:

echo $array[0]->id;
9
giordanolima

配列があります。 PHP配列は基本的に「物事のリスト」です。配列には1つのことがあります。そのことは標準クラスです。配列から削除する必要があります

$object = array_shift($array);
var_dump($object->id);

または、配列内のそのインデックスによって物を参照します。

var_dump( $array[0]->id );

または、配列にいくつのものがあるかわからない場合は、配列をループします

foreach($array as $key=>$value)
{
    var_dump($value->id);
    var_dump($array[$key]->id);
}
3
Alan Storm

このようなものはどうですか。

function objectToArray( $object ){
   if( !is_object( $object ) && !is_array( $object ) ){
    return $object;
 }
if( is_object( $object ) ){
    $object = get_object_vars( $object );
}
    return array_map( 'objectToArray', $object );
}

オブジェクトでこの関数を呼び出します

$array = objectToArray( $yourObject );

参照

0
Nomi