web-dev-qa-db-ja.com

PHP Foreach配列とオブジェクト

オブジェクトの配列があります。 print_r出力は次のようになります。

Array
(
    [0] => stdClass Object
        (
            [sm_id] => 1
            [c_id] => 1
        )
    [1] => stdClass Object
        (
            [sm_id] => 1
            [c_id] => 2

        )
)

結果をループしてオブジェクト要素にアクセスする方法を見つけるのに本当に苦労しています。誰かが私にポインタを与えることができれば、私は非常に感謝するでしょう。

前もって感謝します

30
AttikAttak

つかいます

//$arr should be array as you mentioned as below
foreach($arr as $key=>$value){
  echo $value->sm_id;
}

OR

//$arr should be array as you mentioned as below
foreach($arr as $value){
  echo $value->sm_id;
}
42
GBD

配列とオブジェクトのループ処理は非常に一般的なタスクであり、その方法を学びたいのは良いことです。一般的に、 foreach loop を実行して、各メンバーを循環させ、新しい一時的な名前を割り当て、その名前で特定のメンバーを処理できます。

foreach ($arr as $item) {
    echo $item->sm_id;
}

この例では、$arrの各値に$itemとして順番にアクセスします。そのため、その値から直接値を出力できます。必要に応じて、インデックスを含めることもできます。

foreach ($arr as $index => $item) {
    echo "Item at index {$index} has sm_id value {$item->sm_id}";
}
6
Sampson

配列またはオブジェクト要素を持つ再帰トラバースオブジェクトまたは配列:

function traverse(&$objOrArray)
{
    foreach ($objOrArray as $key => &$value)
    {
        if (is_array($value) || is_object($value))
        {
            traverse($value);
        }
        else
        {
            // DO SOMETHING
        }
    }
}
2
Ronny Sherer

sm_idおよびc_idプロパティはパブリックです。配列でforeachを使用してアクセスできます。

$array = array(/* objects in an array here */);
foreach ($array as $obj) {
    echo $obj->sm_id . '<br />' . $obj->c_id . '<br />';
}
2
imkingdavid