如何在while循环内的td标签中正确显示数组内容?
解决PHP数组直接拼接进HTML属性显示为"Array"的问题
我有如下代码:
$result7 = mysqli_query($conn, $sql7); $resalm = mysqli_query($conn, $contalm); $p = array(); while($row_alm = mysqli_fetch_array($resalm)) { $p[] = $row_alm['nome']; } while($rows_cursos7 = mysqli_fetch_array($result7)) { $tabela8 .= '<td><button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" data-placement="top" title='.$p.'>'.$rows_cursos7['Almoço'].'</button></td>'; }问题是:在while循环内使用
print_r($p)能正常输出数据库返回的数据,但在按钮的title属性中直接拼接$p时,仅显示“array”字样而非实际数据,请问该如何解决?
问题核心是PHP中直接将数组与字符串拼接时,数组会被强制转换为字符串"Array",必须先把数组转换成可读的字符串格式再进行拼接,以下是几种常用解决方案:
1. 用implode()转成普通分隔字符串
这是最常用的处理方式,把数组元素用指定分隔符(比如逗号、空格)连接成字符串:
// 将数组转为逗号分隔的字符串,可根据需求修改分隔符 $p_str = implode(', ', $p); while($rows_cursos7 = mysqli_fetch_array($result7)) { // 注意给title属性加上双引号,避免元素含空格时截断属性 $tabela8 .= '<td><button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" data-placement="top" title="'.$p_str.'">'.$rows_cursos7['Almoço'].'</button></td>'; }
2. 用json_encode()转成JSON格式(适合需保留数组结构的场景)
如果后续需要前端JS解析数组内容,可将数组转为JSON字符串:
$p_json = json_encode($p); while($rows_cursos7 = mysqli_fetch_array($result7)) { $tabela8 .= '<td><button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" data-placement="top" title="'.$p_json.'">'.$rows_cursos7['Almoço'].'</button></td>'; }
转换后会得到类似["张三","李四"]的格式,方便前端直接解析使用。
3. 转成HTML格式实现tooltip换行(Bootstrap场景)
如果需要tooltip内换行显示内容,可开启Bootstrap tooltip的HTML支持,用<br>分隔数组元素:
$p_html = implode('<br>', $p); while($rows_cursos7 = mysqli_fetch_array($result7)) { // 加上data-html="true"属性,告知tooltip解析HTML $tabela8 .= '<td><button type="button" class="btn btn-info btn-xs" data-toggle="tooltip" data-placement="top" data-html="true" title="'.$p_html.'">'.$rows_cursos7['Almoço'].'</button></td>'; }
同时需要初始化tooltip时开启HTML支持:
$('[data-toggle="tooltip"]').tooltip({ html: true });
内容的提问来源于stack exchange,提问作者Bruno
相关产品推荐
相关产品推荐

