У меня есть два массива объектов,
Они идентичны, за исключением того, что у одного есть больше предметов,
чтобы они выглядели как
Array [arrayA]
(
[0] => stdClass Object
(
[id] => 2
[name] => interest 1
[description] => interest one
)
[1] => stdClass Object
(
[id] => 4
[name] => interest 3
[description] => interest three
)
)
Array [arrayB]
(
[0] => stdClass Object
(
[id] => 1
[name] => all
[description] => everything
)
[1] => stdClass Object
(
[id] => 2
[name] => interest 1
[description] => interest one
)
[2] => stdClass Object
(
[id] => 4
[name] => interest 3
[description] => interest three
)
[3] => stdClass Object
(
[id] => 5
[name] => interest 4
[description] => interest four
)
)
Теперь я хочу выполнить цикл по arrayB
, если объект найден в arrayA
(может быть, сравнить идентификатор?), А затем установить [checked] => true
, иначе установить [checked] = false
на arrayB
.
Какой самый простой способ сделать это?
Я думал о том, чтобы сделать возможно
foreach($arrayB as &$obj){
$obj->checked = false;
foreach($arrayA as $obja){
if($obja->id == $obj->id){
$obj->checked = true;
break;
}
if($obja->id > $obj->id) //thanks to De3pTh0ught
break;
}
}
Но должен ли быть более эффективный способ?