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
相关产品推荐
相关产品推荐

