我有對象的兩個數組,循環和比較對象
他們是相同的,除了一個有多個項目,
,使他們看起來像
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
)
)
現在我想做的是,如果找到對象arrayA
(可能比較ID?),則在arrayB
之上循環,然後在arrayB
上設置[checked] => true
其他集合[checked] = false
。
這樣做最簡單的方法是什麼?
我曾經想過做也許
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;
}
}
,但必須有一個更有效的方法?
小心解釋這一點? (雖然我不認爲我會在生產中使用這個...... waaay難以理解......) – Hailwood
啊。我知道了。但哇... – Hailwood
在第1行,我們得到一個字符串,就像你在你的問題中所擁有的一樣。在第2行中,我們遍歷$ arrayB中的id,並且爲每一個我們編寫一個像[[id] => 1'這樣的子字符串,並檢查$ p中是否有它的兩個實例,我們將這個比較的結果賦給'$ o - > checked' –