Foreach内部的foreach(Php - Laravel)内部如果给出双倍输出

时间:2016-01-24 19:47:20

标签: php laravel

我想禁用输入复选框。

$value1->name has the values(product1, product2, product3, product4, product5)
$value2->name has the values(product3, product4)
@foreach ($products_table1 as $value1)
    @foreach($products_table2 as $value2)
        @if($value1->name != $value2->name)
            disabled
        @endif
    @endforeach
@endforeach

我想输出结果:

<input type="checkbox" disabled> Product 1
<input type="checkbox" disabled> Product 2
<input type="checkbox" > Product 3
<input type="checkbox" > Product 4
<input type="checkbox" disabled> Product 5

但不是这样,我得到了:

<input type="checkbox" disabled disabled > Product 1
<input type="checkbox" disabled disabled > Product 2
<input type="checkbox" disabled > Product 3
<input type="checkbox" disabled > Product 4
<input type="checkbox" disabled disabled > Product 5

如何防止双重输出?有替代选择吗? 我正在尝试使用复选框创建产品过滤器。

1 个答案:

答案 0 :(得分:0)

你可以先创建一个array-diff;创建value1中不在value2中的产品列表,然后仅循环此新数组:

http://php.net/manual/en/function.array-diff.php

避免显式分配此差异数组的另一个选项是使用布尔运算符&#39; in-array&#39;:

http://php.net/manual/en/function.in-array.php

这些中的任何一个都应该比原始效率更高,因为正如您注意到的那样,您实际上在嵌套的foreach中两次比较每组两个项目