繁体   English   中英

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

[英]Looping through 2 different arrays to check if a value exists

好吧,我有这个包含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的更好方法

我认为最有效的方法是实际拥有一个告诉您是否存在这种情况的方法:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM