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

PHP按Object->Title分组,将同组Info展示到单个div

按Title分组展示JSON数组数据的解决方案

你现在的问题是因为直接遍历每个对象就输出div,导致同Title的内容被拆分成了多个独立容器。解决的关键是先把数据按Title分组整理,再循环分组后的数据生成对应的div,PHP虽然没有专门的“一键分组”内置函数,但用基础的数组操作就能轻松实现。

具体步骤:

  1. 初始化一个空数组,用来存储分组后的数据(键为Title,值为该Title对应的所有Info集合)
  2. 遍历从JSON解码得到的对象数组,把每个符合条件(Title不是'Image')的Info归类到对应的Title下
  3. 最后遍历分组后的数组,为每个Title生成一个div,并输出该Title下的所有Info

修改后的完整代码:

// 初始化分组数组
$groupedData = [];

while($row = sqlsrv_fetch_array($get_details)) { 
    $a = $row['additionalInformation']; 
    $b = json_decode($a); 
    $c = $b->AdditonalInfo; 
    
    // 第一步:先把数据按Title分组
    foreach ($c as $d){ 
        // 跳过Title为Image的条目
        if($d->Title !== 'Image'){ 
            $title = $d->Title;
            // 如果该Title还没在分组数组里,先初始化一个空数组
            if (!isset($groupedData[$title])) {
                $groupedData[$title] = [];
            }
            // 把当前Info添加到对应Title的数组中
            $groupedData[$title][] = $d->Info;
        }
    } 
}

// 第二步:遍历分组后的数据,生成页面元素
foreach ($groupedData as $title => $infos) {
    echo '<div class="class">';
    echo '<h2>' . htmlspecialchars($title) . '</h2>';
    // 遍历当前Title下的所有Info,逐个输出p标签
    foreach ($infos as $info) {
        echo '<p>' . htmlspecialchars($info) . '</p>';
    }
    echo "</div>";
}

代码说明:

  • 我添加了htmlspecialchars()函数,用来防止XSS攻击,毕竟直接输出数据库/JSON里的内容有安全风险,这个是开发中的好习惯哦
  • 分组数组$groupedData的结构会变成类似:['Title1' => ['Info1', 'Info2'], 'Title2' => ['Info3']],这样后续循环就能轻松按Title生成独立的div
  • 把数据整理和页面输出分开,代码逻辑更清晰,也方便后续维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:40