2013-04-10 22 views
0

玉以及我有這個陣列,其由對象,以便它的外觀的3個陣列的像通過2個不同的陣列循環,以檢查是否存在一個值

$invoice 
$invoice->foo 
$invoice->foo->bars 
$invoice->bars 
$invoice->foobars 

我已經顯示在一個表中的所有FOO杆等

<?php foreach($invoice->foo->bars as $bar) { ?> 
<tr> 
    <td> 
     <?php echo $bar->some_field; 
    </td> 
    <td> 
     <?php echo $bar->another_field; 
    </td> 
</tr> 

和我有一個下拉按鈕看起來像

<ul> 
    <li><a href="some_url/edit/$bar->id">edit</a></li> 
    <li><a href="some_url/delete/$bar->id">Delete</a></li> 
    <li><a href="some_url/add_foobar/$bar->id">Add foobar</a></li> 
</ul> 

請問我目前正在檢查,查看該酒吧做這個

for ($i=0; $i < count($invoice->foobars); $i++) { 
    $foobar_bars[] = $invoice->foobars[$i]->foobar_bar_id; 
} 

和$內部foobar的invoice-> foo->酒吧循環我檢查顯示像

<ul> 
    <li><a href="some_url/edit/$bar->id">edit</a></li> 
    <li><a href="some_url/delete/$bar->id">Delete</a></li> 
<?php if(!in_array($bar->dd_id, $companion_bars)){ ?> 
    <li><a href="some_url/add_foobar/$bar->id">Add Foobar</a></li> 
<?php } ?> 
</ul> 

的按鈕,我想知道,這是最有效的方式做到這一點或者是他們更好的方法來檢查欄是否有foobar的

回答

0

我認爲最有效的方式是真正有告訴你這是否是這樣的方法:

if ($bar->hasCompanionBar()) { 
    // the condition is TRUE 
} 

通過這種方式,您可以推遲決定後來最有效的決定。這將允許您在代碼庫的整個生命週期內創建最高效的代碼。

+0

所以你說的是,我應該有一個方法,我通過所有的** foobars **和單**欄**,而不是所有的** foobars **分配給array – 2013-04-10 11:17:51

+0

沒有我說的是你應該使用域對象而不是數組。域對象知道它們之間的關係,而對象則需要在外部創建該關係。 – 2013-04-11 08:32:50

相關問題