You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP HEREDOC字符串中调用函数生成枚举下拉选单?

解决PHP HEREDOC中调用函数生成下拉选项的问题

你的问题核心有两点:

  • HEREDOC字符串中无法直接嵌入<?php ?>标签执行代码
  • 原函数是直接输出内容(print),而非返回字符串,没法直接插入到HEREDOC中

步骤1:修改函数为返回字符串

把原函数里的print改成字符串拼接逻辑,最后返回生成的所有option代码:

function show_enum_in_dropdownbox() {
    $options = '';
    $query = query("SHOW COLUMNS FROM members_personal_details WHERE Field = 'enum_region'"); 
    
    while ($row = mysqli_fetch_row($query)) {
        foreach(explode("','",substr($row[1],6,-2)) as $option) {
            $options .= "<option>$option</option>";
        }
    }
    
    return $options;
}

步骤2:在HEREDOC中插入函数结果

有两种可行方式:

方式一:先赋值变量再插值

先把函数返回的结果存到变量里,再在HEREDOC中用{$变量名}插入:

$enumOptions = show_enum_in_dropdownbox();

$myenums = <<<DELIMETER
<select name="region" id="" class="form-control" style="min-width: 100%; max-height: 200px;" required> 
    <option value="">PLEASE SELECT REGION</option>
    {$enumOptions}
</select>
DELIMETER;

echo $myenums;

方式二:PHP 5.3+直接在HEREDOC中调用函数(推荐)

HEREDOC支持直接在{}中调用函数,无需提前赋值变量:

$myenums = <<<DELIMETER
<select name="region" id="" class="form-control" style="min-width: 100%; max-height: 200px;" required> 
    <option value="">PLEASE SELECT REGION</option>
    {show_enum_in_dropdownbox()}
</select>
DELIMETER;

echo $myenums;

额外提示

  • 确保你的query()函数是正确封装的mysqli查询(需返回mysqli_result对象)
  • 如果需要给option设置对应的value属性,可以修改函数拼接代码为:$options .= "<option value=\"$option\">$option</option>";

内容的提问来源于stack exchange,提问作者Chris Dormani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:44:52