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

时间:2016-02-11 14:10:48

标签: 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);

?>

3 个答案:

答案 0 :(得分:3)

执行此操作时:

$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;">';

答案 1 :(得分:1)

考虑以下方法:

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

答案 2 :(得分:0)

你有一个太多&#39;和一个人是错位的。试试这样:

public function startCol($p) {
        $tab= "<td Style='border:4px solid black; padding:" . $p . "px;'>";                
        return $tab;
    }