【发布时间】:2020-05-05 07:11:57
【问题描述】:
任务:按键从表中提取任意值。
一个表可以有任意数量的记录。
解决方法:我使用DOC,foreach将表格的html代码翻译成数据数组。
<?php
$text = '
<html>
<head></head>
<body>
<table>
<tr>
<th>Number</th>
<th>ID-A</th>
<th>ID-B</th>
<th>TAG</th>
</tr>
<tr>
<td>7</td>
<td>481</td>
<td>2</td>
<td>ABCSDE</td>
</tr>
<tr>
<td>2</td>
<td>125</td>
<td>1</td>
<td>XDFE</td>
</tr>
</table>
</body>
</html>
';
$domdoc = new DOMDocument();
$domdoc->loadHTML($text);
$thArray = $tdArray = $array = array();
// Get 'th' array
$th = $domdoc->getElementsByTagName('th');
foreach ($th as $th) {
$thArray[] = $th->nodeValue;
}
$count = count($thArray);
//echo var_dump($thArray);
// Get 'td' array
$td = $domdoc->getElementsByTagName('td');
$i = 0;
foreach($td as $td) {
if(count($tdArray[$i]) != $count) {
$tdArray[$i][] = $td->nodeValue;
} else {
$i++;
$tdArray[$i][] = $td->nodeValue;
}
}
$transactionArray = array_combine($thArray, $tdArray);
echo var_dump($transactionArray);
失败发生在数组 td 和 th 组合的阶段。 array_combine() 要求记录数等于表中的行数。如果记录数等于到 th 的单元格数,错误就会消失。
$transactionArray = array_combine($thArray, $tdArray);
在我的例子中,记录的数量可以向任何方向变化。
问题:在这种情况下如何合并数组?
【问题讨论】:
标签: php