-1

我有两个来自数据库查询的对象。我已将它们限制在视图所需的最低限度。它们看起来像这样:

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 循环中运行第二个对象。我想将“for”引用到第一个的“id”,并返回“name”,从而得到“Something”。我尝试至少使用索引失败了,但我想避免以任何方式使用索引。

我想使用我的第二个对象的值“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 回答