我想格式化我使用simple_html_dom解析的表格单元格的内容。该表存在单词,整数或数字,没有dec-points和浮点值,有2个dec-points。我希望它们看起来像这样:
before -> after
"abc" --> "abc" (can stay as they are)
"17" --> "17" (can stay as they are)
"24.24" --> "24.2" (rounded)
"24.29" --> "24.3" (rounded)
我已使用此代码格式化浮点值,但在此示例中整数格式化为17.1。我已尝试使用!is_integer($td)
,但后来没有任何变化。
$table = $html->find('table', 2);
$rowData = array();
// Selected Columns
$columnNumbers = [ 5, 6, 7, 8, 9, 10, 11, 12, 13];
// Loop
foreach($table->find('tr') as $row) {
// initialize array to store the cell data from each row
$flight = array();
foreach($row->find('td') as $columnNumber => $cell) {
// push the cell's text to the array
if ( in_array( $columnNumber, $columnNumbers ) ) {
$flight[] = $cell->plaintext;
}
}
foreach($row->find('th') as $columnNumber => $cell) {
// push the cell's text to the array
if ( in_array( $columnNumber, $columnNumbers ) ) {
$flight[] = $cell->plaintext;
}
}
$rowData[] = $flight;
}
foreach ($rowData as $row => $tr) {
echo '<tr>';
foreach ($tr as $td)
if (!is_numeric($td)) {
echo "<td>$td</td>\n";
}
else {
echo "<td>".number_format(floatval ($td), 1)."</td>\n";
}
}
echo '</tr>';
}
答案 0 :(得分:0)
所以,问题在线:
echo "<td>".number_format(floatval ($td), 1)."</td>\n";
number_format( $value, $n );
将$ n十进制设置为处理的任何$ value。
只有当{0}小数超过$ n时,round( $value, $n );
才会将任何$值四舍五入到$ n小数。
此外,在第二个foreach
循环中,您有($rowData as $row => $tr)
而没有使用$row
。
手册说:
表格还会将当前元素的键分配给$键 每次迭代的变量
这意味着每次迭代都需要不必要的过程。