首页 > 解决方案 > PHP for循环不附加所有字符串

问题描述

我正在尝试创建一个为 Bootstrap 4 表单输入下拉菜单生成代码的 PHP 函数。数据是从 JSON 文件中读取的,并使用 for 循环将每一行附加到字符串变量中。我正在使用 '$json_obj = json_decode('file_name.json', true)' 来读取数据。

示例 JSON 输入 :::

[{
    "name": "Peter",
    "user_name": "ughcsa484"
},
{
    "name": "Sam",
    "user_name": "ss648"
},
{
    "name": "John",
    "user_name": "7eddc4c"
},
{
    "name": "Helen",
    "user_name": "thec7841"
}]

代码 :::

    $output = '<select class="custom-select" id="'.$element.'">';
    $output = $output . '<option selected value="999">Select...</option>';
    for($i=0;$i<sizeof($json_obj);$i++)
    {
        echo($i.' - '.$json_obj[$i]["name"]);
        $output = $output . '<option value="'.$i.'">'.$json_obj[$i]["name"].'</option>';
    }
    $output = $output . '</select>';

for 循环内的字符串 append 只工作一次。但是 for 循环工作正常,for 循环内的“echo”函数也打印所有行。

从for循环中的'echo'函数打印出来:::

0 - Peter
1 - Sam
2 - John
3 - Helen

下拉列表中可用的选项 :::

Select...
Peter

注意 ::: 生成的 HTML 代码作为字符串值保存在 PHP 变量 $output 中。由于这是一个函数,字符串被返回并打印在主文件中,并带有“echo”。

生成的 HTML 代码 :::

<select class="custom-select" id="element">
    <option selected value="999">Select...</option>
    <option value="0">Peter</option>
</select>

所需的 HTML 代码 :::

<select class="custom-select" id="element">
    <option selected value="999">Select...</option>
    <option value="0">Peter</option>
    <option value="1">Sam</option>
    <option value="2">John</option>
    <option value="3">Helen</option>
</select>

标签: phphtmlstringfor-loopappend

解决方案


推荐阅读