以下代码工作正常。在类文件中,函数 setRowCol($r,$c, $v, $pa) 有四个参数,其中 $pa 是在函数 startCol($p) 内部传递的填充参数。但是当我像下面这样设置填充时它不起作用
public function startCol($p) {
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
return $tab;
}
如果我直接给出值,并且工作正常,例如
$tab= "<td Style='border:4px solid black; padding:110px;>";
但我想继续填充值作为参数。有解决方案吗?
完整类文件
class CreateTable {
public $rows;
public $cols;
public $val = array();
public $pad;
public function setRowCol($r,$c, $v, $pa) {
$this->rows = $r;
$this->cols = $c;
$this->val = $v;
$this->pad = $pa;
echo $this->startTable();
for($i=0; $i<$this->rows && $i<sizeof($this->val); $i++) {
echo $this->startRow();
for($j=0; $j<$this->cols && $j<sizeof($this->val); $j++) {
echo $this->startCol($this->pad);
echo $this->val[$j];
echo $this->endCol();
}
echo $this->endRow();
}
echo $this->endTable();
}
function startTable() {
$tab = "<table Style='border:1px solid black';>";
return $tab;
}
function endTable() {
$tab= "</table>";
return $tab;
}
function startRow() {
$tab= "<tr Style='border:1px solid black';>";
return $tab;
}
function endRow() {
$tab= "</tr>";
return $tab;
}
public function startCol($p) {
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
return $tab;
}
function endCol() {
$tab= "</td>";
return $tab;
}
}
?>
文件
<?php
include "CreateTable.php";
$arr = array("Jan", "feb","mar", "apr");
$tab = new CreateTable();
echo $tab->setRowCol(3,10, $arr, 110);
?>
当你这样做时:
$tab= "<td Style='border:4px solid black; padding:110px;>";
结果是这样的:
<td Style='border:4px solid black; padding:110px;>
这在技术上是无效的,因为它在属性的末尾缺少结束引号,但浏览器可能在呈现时为您更正。
但是当你这样做时:
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
结果是这样的:
<td Style='border:4px solid black; padding:'100'px;>
这更加无效,并且可能会混淆浏览器。
我不知道你为什么把这些单引号放在那里,但它们会产生无效的标记。 调试时不要只看呈现的页面,实际查看服务器返回的源。
基本上,不要添加额外的引号,而要添加结束引号:
$tab= "<td Style='border:4px solid black; padding:".$p."px;'>";
或者,更好的是,在标记中使用双引号,因为这是HTML在技术上所要求的:
$tab= '<td Style="border:4px solid black; padding:'.$p.'px;">';
请考虑以下方法:
public function startCol($p = 0) {
$pad = (!$p)? $this->pad : $p;
$tab= "<td Style='border:4px solid black; padding:".intval($pad)."px;'>";
return $tab;
}
如果未传入参数,则使用内部$this->pad
值
你有一个太多的 ' 和一个 ' 放错了地方。尝试如下:
public function startCol($p) {
$tab= "<td Style='border:4px solid black; padding:" . $p . "px;'>";
return $tab;
}