图像我们有 2 个 assocs 数组:
1
array
0 =>
object(stdClass)
public 'id' => string '1'
public 'desc' => string 'Lorem Ipsum'
1 =>
object(stdClass)
public 'id' => string '5'
public 'desc' => string 'Lorem Ipsum'
2 =>
object(stdClass)
public 'id' => string '7'
public 'desc' => string 'Lorem Ipsum'
3 =>
object(stdClass)
public 'id' => string '8'
public 'desc' => string 'Lorem Ipsum'
4 =>
object(stdClass)
public 'id' => string '12'
public 'desc' => string 'Lorem Ipsum'
5 =>
object(stdClass)
public 'id' => string '13'
public 'desc' => string 'Lorem Ipsum'
2
array
0 =>
object(stdClass)
public 'id' => string '2'
public 'desc' => string 'Lorem Ipsum'
1 =>
object(stdClass)
public 'id' => string '5'
public 'desc' => string 'Lorem Ipsum'
2 =>
object(stdClass)
public 'id' => string '7'
public 'desc' => string 'Lorem Ipsum'
3 =>
object(stdClass)
public 'id' => string '58'
public 'desc' => string 'Lorem Ipsum'
4 =>
object(stdClass)
public 'id' => string '66'
public 'desc' => string 'Lorem Ipsum'
5 =>
object(stdClass)
public 'id' => string '78'
public 'desc' => string 'Lorem Ipsum'
创建一个包含所有与“id”匹配的条目的新数组的最佳方法是什么?基本上就像在包含此数据的 2 个表上使用 INNER JOIN 执行 sql 查询一样。
结果应如下所示:
array
0 =>
object(stdClass)
public 'id' => string '5'
public 'desc' => string 'Lorem Ipsum'
1 =>
object(stdClass)
public 'id' => string '7'
public 'desc' => string 'Lorem Ipsum'
我尝试了一下,但是做一个数组映射并检查每个对象是否在另一个数组中存在等效项似乎不是最好的解决方案。
谢谢
最佳答案
这对我有用:
<?php
$arr1 = array(
(object) array(
'id' => '4',
'desc' => 'Four'
),
(object) array(
'id' => '5',
'desc' => 'Five'
),
(object) array(
'id' => '3',
'desc' => 'Three'
)
);
$arr2 = array(
(object) array(
'id' => '2',
'desc' => 'Two'
),
(object) array(
'id' => '4',
'desc' => 'Four'
),
(object) array(
'id' => '6',
'desc' => 'Six'
)
);
$arr3 = array();
foreach( $arr1 as $obj1 ){
foreach( $arr2 as $obj2 ){
if( $obj1->id == $obj2->id ){
$arr3[] = $obj1;
break;
}
}
}
echo '<pre>';
print_r( $arr3 );
echo '</pre>';
关于PHP 比较两个关联数组并创建一个具有匹配项的新数组的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45756683/