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

如何通过子分类ID在文本输入框获取名称?无需foreach调用Markup

解决方案

一、将Select转为Text Input并填充子分类名称

步骤1:预处理子分类数组

先把原有的$sub_category数组转换成以子分类ID为键、名称为值的关联数组,跳过循环直接通过ID快速获取对应名称:

// 替换成你实际的字段名:'name'是子分类名称字段,'id'是子分类ID字段
$sub_category_map = array_column($sub_category, 'name', 'id');

步骤2:渲染文本输入框

从$sub_category_data中取出选中的子分类ID,通过预处理好的关联数组获取名称填充到文本框(可加readonly禁止手动修改,按需调整):

<input 
    type="text" 
    value="<?php 
        // 替换成你实际的ID字段名,比如$sub_category_data['sub_cat_id']
        $selected_id = $sub_category_data['id'] ?? '';
        echo $selected_id ? htmlspecialchars($sub_category_map[$selected_id], ENT_QUOTES) : '';
    ?>"
    <?php echo $selected_id ? 'readonly' : ''; ?>
>

注:htmlspecialchars用于防范XSS注入,ENT_QUOTES确保单双引号都被转义,提升安全性。


二、Markup文本框+隐藏域直接通过子分类ID填充

步骤1:预处理Markup数据(按需操作)

如果你的Markup数据(对应子分类的markup值)不是以ID为键的关联数组,先做同样的转换:

// 假设$markup_list是包含子分类ID和对应markup值的数组,替换实际字段名
$markup_map = array_column($markup_list, 'markup_value', 'sub_cat_id');

步骤2:渲染文本框和隐藏域

用选中的子分类ID从$markup_map中取值,直接填充到两个控件:

<!-- Markup文本输入框 -->
<input 
    type="text" 
    value="<?php 
        $selected_id = $sub_category_data['id'] ?? '';
        echo $selected_id ? htmlspecialchars($markup_map[$selected_id], ENT_QUOTES) : '';
    ?>"
>

<!-- 对应的隐藏域 -->
<input 
    type="hidden" 
    name="markup_value" 
    value="<?php 
        $selected_id = $sub_category_data['id'] ?? '';
        echo $selected_id ? $markup_map[$selected_id] : '';
    ?>"
>

注:隐藏域的值若无需前端展示,可不用htmlspecialchars,但后端存储时仍需做安全校验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:15:39