[英]How to call a function in another function with arguments - PHP class
以下代码可以正常工作。 在类文件中,函数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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.