-1

重複
の可能性:親stdClassObj内に含まれているstdClassobjを反復処理します。(別名:子オブジェクトを反復処理する)

... bccauseは、親オブジェクトが空の場合foreach、エラーを示します。for()私の好みのループロジックですが、子オブジェクトのプロパティにアクセスする方法がわかりません。

仕事っぽいコード:

foreach ($main_object as $object) {
    $object->value = $object->value * 3.14;
}

ただし$main_objectが空またはnullの場合foreach、エラーをダンプします。

私はもっ​​とこのようなものを探しています:

(擬似)コード:

for ($p = 0; $p < counter($main_object); $p++) {
    //$p being the index'd id of the child object. That is where I'm having issues, how do I refer to child X within a parent object.
    $main_object->$p->value = $main_object->$p->value * 3.14;
}

これで、「$main_object」が空/nullの場合、エラーはスローされません。ロジックはトラックインを継続します。

$x->propertiesオブジェクトが親オブジェクト内の子オブジェクトのグループの1つである場合、子オブジェクトにアクセスするにはどうすればよいですか?

4

3 に答える 3

1

繰り返す前に、まずオブジェクトに少なくとも1つのアイテムが含まれていることを確認してください。

if($a && count($a)){
    // iterate using foreach
}

私もこれは面倒だと思いますが、操作foreachが非常に簡単なので、少しトレードオフになります。私はまだ上記のようなものを使用するよりもむしろ上記を実行したいと思いますfor(これも機能する可能性があります)。

PHPカウントドキュメント

乾杯

于 2013-01-04T20:08:33.173 に答える
0

get_class_varsクラスのすべての属性を配列で返すwhichを使用できます。そして、forループで繰り返します。そして、配列キーとオブジェクトを使用してそれらにアクセスできます。

$aryAttr = get_class_vars($main_object);
for ($p = 0; $p < count($aryAttr); $p++) {
    $key=key($aryAttr);
    $main_object->$key>value = $main_object->$key->value *3.14;
    next($aryAttr);
}

これは役立つかもしれませんが、テストしませんでした。

于 2013-01-04T20:07:10.057 に答える
0

foreachループを実行する前に、main_objectが空かどうかを確認してみませんか

if($main_object->child != null)
{
  foreach ($main_object->child as $object)
 {
    $object->value = $object->value * 3.14;
 }
}
于 2013-01-04T20:10:21.913 に答える