请问一下,我用PHP制作table的时候,为什么会随着我给出的行越来越多而前面空出那么大一行?我做的一个计算行列式的网页,前面是3行4行还好,越多空白越大,这是为什么啊?
求教高人。
代码如下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>行列式计算页面</title>
<link href="includes/style.css" rel="stylesheet" type="text/css" />
</head><body>
<?php
include('includes/head.html');
function left($arr,$row,$col,$many)  //求余子式
{
$newarr=array();
$jumprow=false;  //设立跳转标志
for($newrow=0;$newrow<$many-1;$newrow++)
{
$jumpcol=false; //设立跳转标志,每行的跳转标志要归零
if($newrow==$row) $jumprow=true;
for($newcol=0;$newcol<$many-1;$newcol++)
{if($newcol==$col) $jumpcol=true;
if($jumpcol&&$jumprow) $newarr[$newrow][$newcol]=$arr[$newrow+1][$newcol+1];  //跳转则增加1
else if(!$jumpcol&&$jumprow) $newarr[$newrow][$newcol]=$arr[$newrow+1][$newcol];
else if($jumpcol&&!$jumprow) $newarr[$newrow][$newcol]=$arr[$newrow][$newcol+1];
else if(!$jumpcol&&!$jumprow) $newarr[$newrow][$newcol]=$arr[$newrow][$newcol];
}
}
return $newarr;
}
function gcd($a,$b)
{
if($b>$a)
{
$c=$b;
$b=$a;
$a=$c;
}
while($a%$b!=0)
{
$c=$b;
$b=$a%$b;
$a=$c;
}
return $b;
}
function result($arr,$many)
{
if($many==1) return $arr[0][0];
if($many==2) return $arr[0][0]*$arr[1][1]-$arr[0][1]*$arr[1][0];
else
{
$total=0;
$a=1;
for($col=0;$col<$many;$col++)
{
$total+=$a*$arr[0][$col]*result(left($arr,0,$col,$many),$many-1);
$a=-$a;
}
return $total;
}
}
if(isset($_POST['numbers']))
{
if(is_array($_POST['numbers']))
{
$real=true;
foreach($_POST['numbers'] as $arr2)
foreach($arr2 as $value)
if(!is_numeric($value)) $real=false;  //判断输入是否合法
if(!$real)
echo '<h1 class="warn">输入不合法</h1>';
else
{
$arr=$_POST['numbers'];
$many=$_POST['many'];
$myval=result($arr,$many);
echo '<h3 class="result">您输入的行列式的计算结果为'.$myval.'</h3>';
echo '<table>';
echo '<tr><td colspan="'.$many.'" align="center">伴随矩阵</td></tr>';
$bsjz=array();
for($row=0;$row<$many;$row++)
{
echo '<tr>';
for($col=0;$col<$many;$col++)
{
$val=result(left($arr,$row,$col,$many),$many-1);
$bsjz[$row][$col]=$val;
echo "<td><input type='text' maxlength='5' size='3'  value='$val' readonly='readonly' /></td>&nbsp";
}
echo '</tr>';
}
echo '</table>';
$val=result($bsjz,$many);
echo '<h3 class="result">您输入的行列式的伴随矩阵的值为'.$val.'</h3>';
if($myval==0) echo '<h3 class="result">该行列式为0,没有逆矩阵</h3>';
else
{
echo '<table>';
echo '<tr><td colspan="'.$many.'" align="center">逆矩阵</td></tr>';
$njz=array();
for($row=0;$row<$many;$row++)
{
echo '<tr>';
for($col=0;$col<$many;$col++)
{
$val=$bsjz[$row][$col]/$myval;
$njz[$row][$col]=$val;
if($bsjz[$row][$col]%$myval!=0)
{
$mod=gcd(abs($bsjz[$row][$col]),abs($myval));
$val=$bsjz[$row][$col]/$mod.'/'.$myval/$mod;
}
echo "<td><input type='text' maxlength='5' size='3'  value='$val' readonly='readonly' /></td>&nbsp";
}
echo '</tr>';
}
echo '</table>';
$val=result($njz,$many);
echo '<h3 class="result">您输入的行列式的逆矩阵的值为'.$val.'</h3>';
}
}
}
}
if(isset($_POST['many']))
{
if(is_numeric($_POST['many']))
{
$many=$_POST['many'];
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<table>';
for($row=0;$row<$many;$row++)
{
echo '<tr>';
for($col=0;$col<$many;$col++)
{
if(isset($_POST['numbers']))
$val=$_POST['numbers'][$row][$col];
echo "<td><input type='text' maxlength='5' size='3'  name='numbers[$row][]' value='$val' /></td>&nbsp";
}
echo '</tr>';
}
echo '<tr><td align="center"><input type="submit" value="提交"></td></tr>';
echo '</table>';
}
else echo '<h1 class="warn">输入不合法!</h1>';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method= "post">
请输入您需要计算的行列式的阶数:<input type="text" size="2" maxlength="2" name="many" value=<?php if(isset($_POST['many'])) echo $_POST['many']; ?> />(请不要输入过大,16以下为宜)
<input type="submit" value="提交" />
</form>
<?php
include('includes/footer.html');
?>
</body>
</html>

解决方案 »

  1.   

    空格写到td外面去了
    echo "<td><input type='text' maxlength='5' size='3'  name='numbers[$row][]' value='$val' />&nbsp</td>";
      

  2.   

    楼上的正确!把88行、113行、138行,</td>后面的&nbsp,换成\necho "<td><input type='text' maxlength='5' size='3'  name='numbers[$row][]' value='$val' /></td>\n";
      

  3.   

    楼主是自找麻烦啊,浏览器内右键查看一下源文件就能发现是&nbsp问题了,和php本身没什么关系。
      

  4.   

    你的布局肯定乱了
    用dreamwave改改