[英]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.