即使foreach数组为空,也在php foreach中运行代码块

时间:2018-04-30 08:19:54

标签: php

我有一个动态表单,可以同时插入和更新。这适用于更新现有数据,但在插入数据时不起作用,因为$input_fields为空,因此foreach会引发错误,并且不会显示表单字段。那么当foreach为空时,如何在$input_fields内运行代码?

   <?php foreach ($input_fields as $input_field) : ?>
            // some demo code below
            <div class="form-group">
                <label for="">Name</label>
                <input class="form-control field_name_input name" type="text" name="data[][name]" value="<?= $input_field['name'] ?>">
            </div>
            // some demo code below ends
   <?php endforeach; ?>

我在foreach

之前尝试了下面的代码
if(!$input_fields) {
    $input_fields = [];
}; 

以及foreach

中的代码
foreach ((array)$input_fields as $input_field)

但这没有用,因为第一个代码片段只是空数组,所以循环不会发生,第二个几乎是同一个东西。我希望你明白。

  

编辑1:$ input_fields是我保存表单属性的数组。

3 个答案:

答案 0 :(得分:1)

使用默认条目代替空的默认数组:

if(!is_array($input_fields) || empty($input_fields)) {
    $input_fields = [
        [
            'name' => "Hubba Bubba"
            // and some more elements
        ]
    ];
}; 

答案 1 :(得分:0)

你的if是不行的,因为你在询问数组是否为空,然后将其分配为空。

如果检查它是否为空,则可以将foreach循环包围在内部而不是这样做 然后它只会在尺寸> gt = = 1

时运行

如果你想至少运行一次循环并清空默认值,或者你可以在if块中写下html标签

答案 2 :(得分:0)

  

所以,我在foreach之前添加了这行代码,并且它像我一样工作   预期

if(empty($input_fields)) {
    $input_fields = [[]];
};