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

PHP存储数据库查询结果到多维数组时出现数组转字符串转换提示

解决数组转字符串转换的Notice问题

这个问题的根源在于你对$res数组的结构理解和遍历方式不匹配,咱们一步步拆解解决:

问题分析

从var_dump($res)的输出能明确看到,$res是一个索引数组,每个元素都是包含PARENT_CAT_CODE和PARENT_CAT_DESC的子数组:

array(4) { 
  [0]=> array(2) { ["PARENT_CAT_CODE"]=> string(3) "100" ["PARENT_CAT_DESC"]=> string(16) "ROUTE COLLECTION" } 
  [1]=> array(2) { ["PARENT_CAT_CODE"]=> string(1) "1" ["PARENT_CAT_DESC"]=> string(5) "SHOES" } 
  [2]=> array(2) { ["PARENT_CAT_CODE"]=> string(1) "4" ["PARENT_CAT_DESC"]=> string(41) "ΑΝΤΑΛΛΑΚΤΙΚΑ ΟΧΗΜΑΤΩΝ" } 
  [3]=> array(2) { ["PARENT_CAT_CODE"]=> string(1) "6" ["PARENT_CAT_DESC"]=> string(10) "ΒΑΦΕΣ" } 
}

但你在视图里的foreach写法,是把$res当成了键为PARENT_CAT_CODE、值为PARENT_CAT_DESC的关联数组,这就导致遍历的时候$PARENT_CAT_DESC其实是一个子数组——PHP尝试把这个子数组转成字符串输出到<option>里,自然就抛出了Array to string conversion的Notice。

两种解决方案

方案1:修改后端数组构建逻辑(视图代码无需改动)

把原来构建数组的代码,从把整个子数组塞进$res,改成直接将PARENT_CAT_CODE作为键,PARENT_CAT_DESC作为值存入$res:

原代码:

while ( $row = oci_fetch_array($categories_PST) ) {
    $res[] = $row;
}

修改后:

while ( $row = oci_fetch_array($categories_PST) ) {
    $res[$row['PARENT_CAT_CODE']] = $row['PARENT_CAT_DESC'];
}

这样$res就变成了你视图期望的关联数组,原有的视图代码可以正常工作。

方案2:修改视图遍历逻辑(后端数组保持不变)

如果不想改动后端代码,直接调整视图的foreach,遍历每个子数组并取出对应的键值:

原视图代码:

<?php foreach($res as $PARENT_CAT_CODE => $PARENT_CAT_DESC): ?>
<option value="<?= $PARENT_CAT_CODE; ?>"><?= $PARENT_CAT_DESC; ?></option>
<?php endforeach; ?>

修改后:

<?php foreach($res as $item): ?>
<option value="<?= $item['PARENT_CAT_CODE']; ?>"><?= $item['PARENT_CAT_DESC']; ?></option>
<?php endforeach; ?>

这里$item就是$res里的每个子数组,直接访问它的PARENT_CAT_CODE和PARENT_CAT_DESC键就能拿到对应的值,不会再触发数组转字符串的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:42