簡體   English   中英

如何使用參數調用另一個函數中的函數-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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM