-1

DB クエリに由来する 2 つのオブジェクトがあります。ビューに必要な最小限に制限しました。それらは次のようになります。

array(189) {
  [0]=>
  object(stdClass)#31 (2) {
    ["id"]=>
    string(1) "187"
    ["name"]=>
    string(13) "Something"
  }
}

array(3) {
  [0]=>
  object(stdClass)#337 (10) {
    ["id"]=>
    string(1) "1"
    ["type"]=>
    string(1) "2"
    ["for"]=>
    string(3) "187"
    ...
  }
}

foreach ループで 2 番目のオブジェクトを実行しています。最初の「id」に「for」を参照し、「name」を返すと「Something」になります。少なくともインデックスを使用する試みは失敗しましたが、どちらの方法でもインデックスを使用したくありません。

2 番目のオブジェクトの値 "for" を使用し、それを最初のオブジェクトの "id" にリンクして、一致する "name" (私の場合は "Something") を出力したいと考えています。どうすればこれを達成できますか?

ありがとうございました!

4

1 に答える 1

1

質問はやや不明確ですが、他のプロパティにアクセスできるように、id等しい最初の配列からオブジェクトを見つけたいと思われますか?"187"

最初の配列のキーがオブジェクトの ID 番号でない限り (現在はそうではありません)、最初の配列の各項目をループして、必要な項目がid見つかるまでそのプロパティをテストする必要があります。つまり、ネストされたループです。

おそらく、最初の配列を再構築する方がよいでしょう。id別の方法として、自動生成された順次キーの代わりに、 でキー付けされた最初の配列を作成します。これにより、検索を実行しなくても、目的のアイテムに簡単にアクセスできます (例: $first[$id]['name'])。適切なアプローチは、このルックアップ操作を実行する必要がある頻度と配列のサイズによって異なります。

idが一意であることが保証されている場合、次のようなもので配列を前処理して、idプロパティにキーを設定できます。

// $array189 is the first array from your question
$first = array();
foreach ($array189 as $item) {
    $first[ $item->id ] = $item;
}
unset($array189);
于 2013-07-13T17:41:47.033 に答える