You need to enable JavaScript to run this app. PHP解析无键值数组及simple_html_dom生成数组读取错误问题
优惠活动
大模型
产品
解决方案
定价
更多

PHP解析无键值数组及simple_html_dom生成数组读取错误问题

问题解决说明

你不需要将数组转换为对象或者做额外解析,读取失败的核心原因是对数组的嵌套结构理解有误。

你构造的数组外层键就是Model、Year Manufacturer这类表格第一列的内容,内层数组的键才是对应第二列的具体值,所以你之前的遍历写法是把外层的Model键当成了内层数组的键,自然读取不到内容。

正确读取方法

方法1:直接读取指定字段

不需要遍历数组,直接通过外层键读取对应内容即可:

// 读取Model对应的所有值,返回数组格式
$modelData = $table['Model'] ?? [];
// 取出第一个Model值(适配PHP7.3及以上版本)
$model = array_key_first($modelData);
// 低版本PHP可以用以下方式取
if (!empty($modelData)) {
    foreach ($modelData as $modelName => $val) {
        $model = $modelName;
        break;
    }
}

方法2:遍历读取所有字段

如果需要批量读取所有表头和对应值,用双层遍历即可:

foreach ($table as $header => $valueList) {
    foreach ($valueList as $content => $v) {
        echo "{$header}:{$content}\n";
        // 输出示例:Model:PA-31-310
    }
}

优化数组结构(可选)

如果你只需要每个表头对应单个值,爬取时可以直接构造一维数组,后续读取更方便:

$table = array();
$html = file_get_html('www.mysite.com');
foreach($html->find('tr') as $row) {
    $header = trim($row->find('td',0)->plaintext);
    $content = trim($row->find('td',1)->plaintext);
    // 直接存为键值对格式
    $table[$header] = $content;
}

// 后续直接读取即可
echo $table['Model']; // 输出PA-31-310
echo $table['Year Manufacturer']; // 输出1975

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 21:24:07