0

好吧,我有这个由 3 个对象数组组成的数组,所以它看起来像

$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>

我目前是否正在通过这样做来检查酒吧是否有 foobar

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

在 $invoice->foo->bars 循环中,我检查以显示按钮

<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 的更好方法

4

1 回答 1

0

我认为最有效的方法是实际使用一种方法来告诉您是否是这种情况:

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

这样,您可以将最有效的决定推迟到以后。这将允许您在代码库的整个生命周期内创建最有效的代码。

于 2013-04-10T09:21:44.437 回答