循环遍历2个不同的数组以检查是否存在值

时间:2013-04-10 09:05:50

标签: php arrays codeigniter multidimensional-array

好吧,我有这个由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-&gt; foo-&gt;栏圈内我检查以显示按钮

<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

1 个答案:

答案 0 :(得分:0)

我认为最有效的方法是实际上有一个方法告诉你是否是这种情况:

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

通过这种方式,您可以将决策推迟到以后最有效的方面。这将允许您在代码库的生命周期内创建最有效的代码。