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

如何使用参数在另一个函数中调用函数-PHP类,php,class,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 $ta

下面的代码工作正常。在类文件中,函数setRowCol($r、$c、$v、$pa)有四个参数,其中$pa是在函数startCol($p)内传递的填充参数。但是当我像下面这样设置填充时,它不起作用

public function startCol($p) {
            $tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";                
            return $tab;
        }
公共功能startCol($p){
$tab=“”;
但我想保留填充值作为参数。有解决方案吗

完整类文件
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;
    }
}
?>
class创建表{
公共$行;
公帑$cols;
public$val=array();
公帑垫;
公共函数setRowCol($r、$c、$v、$pa){
$this->rows=$r;
$this->cols=$c;
$this->val=$v;
$this->pad=$pa;
echo$this->startTable();
对于($i=0;$irows&&$ival);$i++){
echo$this->startRow();
对于($j=0;$jcols&&$jval);$j++){
echo$this->startCol($this->pad);
echo$this->val[$j];
echo$this->endCol();
}
echo$this->endRow();
}
echo$this->endTable();
}
函数startTable(){
$tab=“”;
返回$tab;
}
函数endTable(){
$tab=“”;
返回$tab;
}
函数startRow(){
$tab=“”;
返回$tab;
}
函数endRow(){
$tab=“”;
返回$tab;
}
公共职能startCol($p){

$tab=“考虑以下方法:

public function startCol($p = 0) {
        $pad = (!$p)? $this->pad : $p; 
        $tab= "<td Style='border:4px solid black; padding:".intval($pad)."px;'>";
        return $tab;
}
公共功能startCol($p=0){
$pad=(!$p)?$this->pad:$p;
$tab=“”;
返回$tab;
}

如果未传入参数,则使用内部
$this->pad

考虑以下方法:

public function startCol($p = 0) {
        $pad = (!$p)? $this->pad : $p; 
        $tab= "<td Style='border:4px solid black; padding:".intval($pad)."px;'>";
        return $tab;
}
公共功能startCol($p=0){
$pad=(!$p)?$this->pad:$p;
$tab=“”;
返回$tab;
}

如果未传入参数,请使用内部的
$this->pad
值您的一个参数太多,而另一个参数放错了位置。请这样尝试:

public function startCol($p) {
        $tab= "<td Style='border:4px solid black; padding:" . $p . "px;'>";                
        return $tab;
    }
公共功能startCol($p){
$tab=“”;
返回$tab;
}

您的“一”过多,而“一”放错了位置。请这样尝试:

public function startCol($p) {
        $tab= "<td Style='border:4px solid black; padding:" . $p . "px;'>";                
        return $tab;
    }
公共功能startCol($p){
$tab=“”;
返回$tab;
}
执行此操作时:

$tab= "<td Style='border:4px solid black; padding:110px;>"; 
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
$tab=”
这在技术上是无效的,因为它在属性末尾缺少一个结束引号,但浏览器可能在渲染时为您更正了这一点

但当你这样做的时候:

$tab= "<td Style='border:4px solid black; padding:110px;>"; 
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
$tab=”
这是更无效的,可能会混淆浏览器

我不知道为什么要在那里加上这些单引号,但它们会产生无效的标记。调试时不要只查看呈现的页面,而是查看服务器返回的源代码

基本上,不要添加额外的引号,而是添加结束引号:

$tab= "<td Style='border:4px solid black; padding:".$p."px;'>";
$tab=”“;
或者,更好的是,在标记中使用双引号,因为这是HTML技术上的要求:

$tab= '<td Style="border:4px solid black; padding:'.$p.'px;">';
$tab='';
执行此操作时:

$tab= "<td Style='border:4px solid black; padding:110px;>"; 
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
$tab=”
这在技术上是无效的,因为它在属性末尾缺少一个结束引号,但浏览器可能在渲染时为您更正了这一点

但当你这样做的时候:

$tab= "<td Style='border:4px solid black; padding:110px;>"; 
$tab= "<td Style='border:4px solid black; padding:'".$p."'px;>";
$tab=”
这是更无效的,可能会混淆浏览器

我不知道为什么要在那里加上这些单引号,但它们会产生无效的标记。调试时不要只查看呈现的页面,而是查看服务器返回的源代码

基本上,不要添加额外的引号,而是添加结束引号:

$tab= "<td Style='border:4px solid black; padding:".$p."px;'>";
$tab=”“;
或者,更好的是,在标记中使用双引号,因为这是HTML技术上的要求:

$tab= '<td Style="border:4px solid black; padding:'.$p.'px;">';
$tab='';

Lovin'一个解释得很好的答案。特别是关于“调试时不要只查看呈现的页面,实际查看源代码”的部分。我也多次建议这一点。(一些)人们并不认为查看HTML源代码是一个真正的“工具”。OP的代码中还有一些其他内容会产生:属性之间没有空格"在HTML源代码中。原因:放错了分号。
纯黑色“;
<应该读为
纯黑色;
。另外,他们应该在每个分号后面添加
\n
,以生成干净的HTML。现在,它读起来像一条长线,使得调试/跟踪非常困难。这是一个解释得很好的答案。尤其是part about:“调试时不要只查看呈现的页面,而是查看源代码”。这也是我多次提出的建议。(有些)人们并不认为查看HTML源代码是一个真正的“工具”。OP的代码中还有一些东西会产生:“属性之间没有空格”在HTML源代码中。原因:放错了分号。
纯黑色“;
<应该读为
纯黑色;
。另外,他们应该在每个分号后面添加
\n
,以生成干净的HTML。现在,它读起来像一条长线,使得调试/跟踪非常困难。旁注:您确实意识到您的代码生成了同一数组垂直3次。这是目的吗?这不是目的。我喜欢通过自己编写代码来进行过程编程和学习OOP注意:你确实意识到你的代码垂直3次生成同一数组。这是目的吗?这不是目的。我喜欢过程编程和学习OOP在HTML源代码中自己编写一些东西(在
'110'
中加上单引号),并在HTML源代码中加上:“属性之间没有空格”。它应该读作
$tab=“”;
@Fred ii-,谢谢