使用if条件PHP双重foreach

时间:2017-12-03 18:11:35

标签: php mysql arrays foreach bootstrap-duallistbox

我需要帮助,因为我有执行代码的问题。 在我的数据库中,我存储了一个多选像这样格式的数组:[“5”,“6”,“7”,“8”]我使用json_encode来存储我的数组。

我有一个带有select multiple(https://www.virtuosoft.eu/code/bootstrap-duallistbox)的表单。

此输入填充表格的数据。所以这是填写左侧的列表。

我想填写右边的列表,我的数据存储在数据库中。要做到这一点,我必须将选择对应的每个选项。 但我不知道这样做......我认为我使用if fore条件的双foreach但是......

一些代码可以解释这一点:

保存所有选项的表格: 表名:婚礼
字段:id,title

保存所选选项的表格

表名:步骤
字段:id,participant =>这个字段有weddings.id的数量,如[“5”,“6”,“7”,“8”]

要填写我的选择列表,我这样做

<select multiple="multiple" id="participants" class="form-control" name="participants[]">
    @foreach ($weddings as $wedding)
      <option value="{{ $wedding->id }}" >{{ $wedding->title }}  </option>
    @endforeach
</select>

要从步骤中检索数据,请执行此操作

foreach(json_decode($step->participants) as $k => $v){
   echo '<option value="'.$v.'" selected>'.$v.'</option>';
}

因为我需要在选项上加上'选中',所以这个选项会转到右侧列表。

如何将2 foreach与我的步骤表中的值商店“选中”结合婚礼表?

我希望你理解我。

非常感谢。

PS:我使用Laravel

2 个答案:

答案 0 :(得分:1)

试试这个,最重要的是要理解它!

// select all participants
// for example lets say you got this from your database 
$data = '["5","7","9","2"]';
// now decode it 
$data = json_decode($data);

$weddings = [];
// convert values to integers 
foreach($data as $key => $value) 
{ 
   $weddings[$key] = (Int) $value; 
}

// create select input 
$input = '<select>';

foreach($weddings as $id) 
{
    // lets say you want wedding id 5 to be selected
    // all you have to do is add an If statement and that's it !
    if($id === 5) {
         // this is wedding id 5 ! 
         $input .= '<option value="'.$id.'" selected>'.$id.'</option>';
    } else if ($id === 7) {
          // do something with wedding id 7 ? 
         $input .= '<option value="'.$id.'" class="number7">'.$id.'</option>';
    } else {
         $input .= '<option value="'.$id.'">'.$id.'</option>';
    }
} 

// close select input tag 
$input .= '</select>';

echo $input; 

答案 1 :(得分:0)

太棒了!!!它有效。

但是我需要在第二个foreach之后更改第一个foreach的结束因为如果不是我只有循环的最后一个项目。

非常感谢 azjezz

有关信息,这是我的工作代码:

<div id="select-participants" class="form-group {{ $errors->has('participants') ? 'has-error' : '' }}">
        <label for="participants" class="col-sm-2 control-label">{!! $errors->has('participants') ? '<i class="fa fa-times-circle-o"></i>' : '' !!}Participants</label>
        <div class="col-sm-10">
                <select multiple="multiple" id="participants" class="form-control" name="participants[]">
                    @php
                        $export_json_participants = json_decode($preparationStep->participants);
                    @endphp
                        @foreach($export_json_participants as $key => $value)
                            $export_json_participants[$key] = $value;
                            @foreach ($weddings as $wedding)
                                <option value="{{ $wedding->id }}" {{ $wedding->id == $export_json_participants[$key] ? 'selected' : '' }}>{{ $wedding->title }}</option>
                            @endforeach
                        @endforeach
                 </select>
                @if ($errors->has('participants'))
                    <span class="help-block">
                        <strong>{{ $errors->first('participants') }}</strong>
                    </span>
                @endif
        </div>
    </div>

非常感谢,这很好,我明白了。 : - )