我有两个来自数据库查询的对象。我将它们限制在视图所需的最小值。它们看起来像这样:
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”。我如何实现这一目标?
谢谢!
答案 0 :(得分: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);