如何使用参数调用另一个函数中的函数 - PHP 类


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;
    }