循环使用in_array中的值并使用PHP检查多个复选框

时间:2018-01-06 12:26:24

标签: php arrays loops

我有一系列Grades包含在循环中。我想检查数据库驱动(循环)复选框的值是否与循环中的任何值匹配。如果它与给定项目匹配,则将该输入项标记为已选中。'

例如,print_r($grades_array)输出以下数据:

Array ( [0] => Grade 5 [1] => Grade 8 [2] => Grade 9 )

这是我在每个输入项目中的循环(我使用Laravel和Semantic UI,但PHP概念应该仍然相同):

@foreach($list_of_grades as $output_grade)
  <div class="inline field">
    <div class="ui checkbox">
      <input type="checkbox" name="grade"
        @if(in_array($output_grade->name, $grade_array))
          checked="checked"
        @endif
        tabindex="0" class="hidden">
      <label>{{ $output_grade->name }}</label>
    </div>
  </div>
@endforeach

这是我得到的输出结果:

HTML output (actual)

然而,这是我期望得到的输出:

Desired HTML output

关于代码有什么问题的任何想法?

并且,只是在它被问及之前澄清,是的,$output_grade->name值和数组中的值匹配。我也可以交换ID,它会产生相同的单一检查值结果。

1 个答案:

答案 0 :(得分:0)

我也遇到同样的情况,如果您找到更好的解决方案,请使用技巧,

@php
    $arrayValue = explode(',', $grade_array);
@endphp

@foreach($arrayValue as $data)
   @php $arrayData[$data] = $data @endphp
@endforeach

@foreach($list_of_grades as $output_grade)
  <div class="inline field">
    <div class="ui checkbox">
      <input type="checkbox" name="grade"
        @if(in_array($output_grade->name, $arrayData))
          checked="checked"
        @endif
        tabindex="0" class="hidden">
      <label>{{ $output_grade->name }}</label>
    </div>
  </div>
@endforeach

但是它对我有用吗?

here screenshot