检查函数输出的其他方法


Other ways to check function's output?

一个明显的PHP新手的问题。

我有一个类,里面有两个函数。我正在尝试使用第二个函数检查第一个函数的输出(如下面的代码所示)。这样做的问题是输出 (1) 已经显示在 if 语句行中。结果如下:

1

标志为:1

所以问题是,如何在不显示输出的情况下执行此操作 if 语句?

class Test{
    public $flag;
    private function func_one(){
        $this->flag = 1;
        echo $this->flag;
        return $this->flag;
    }
    public function display_func(){
        if ( !empty( $this->func_one() ) ){
            echo 'Flag is: ';
            $this->func_one();
        }
        // if ( $this->func_one() === 1 ){
        //  echo 'Flag is: ';
        //  $this->func_one();  
        // }
        //var_dump( $this->func_one() );
    }
}
$classTest = new Test();
$classTest->display_func();
class Test{
public $flag;
private function func_one(){
    $this->flag = 1;
    return $this->flag;
}
public function display_func(){
    if ( !empty( $this->func_one() ) ){
        $result=$this->func_one();
        echo 'Flag is: '.$result;
    }
    }
}
$classTest = new Test();
$classTest->display_func();

将返回值存储在变量中并对其运行比较

if ( !empty( $this->func_one() ) ){
    echo 'Flag is: ';
    $this->func_one();
}

应该是

$val=$this->func_one();
if (!empty($val)){
      echo "Flag is: $val";
}

还要从func_one()中删除回声,只需返回值即可。这允许您仅调用该方法一次,并根据返回的值做出决定。

func_one()中删除echo

你的条件语句:if ( !empty( $this->func_one() ) )调用func_one()func_one()的第二行是echo $this->flag;。这就是输出显示在 if 语句中的原因。

您需要从第一个函数中删除echo

此外,在第二个函数中,连接从第一个函数返回的输出。

因此,以下是更改:

private function func_one(){
    $this->flag = 1;
    //echo $this->flag; -> remove this
    return $this->flag;
}
public function display_func(){
    if ( !empty( $this->func_one() ) ){
        echo 'Flag is: ' .$this->func_one(); // Also, observe the changes on this line.
    }

您可以从第二个函数中删除 if 条件。 请参阅下面的代码。

类测试 {

public $flag;
private function func_one() {
    $this->flag = 1;
    echo $this->flag;
    return $this->flag;
}
public function display_func() {
    //if ( !empty( $this->func_one() ) ){
    echo 'Flag is: ';
    $this->func_one();
    //}
    // if ( $this->func_one() === 1 ){
    //  echo 'Flag is: ';
    //  $this->func_one();  
    // }
    //var_dump( $this->func_one() );
}

}

$classTest = 新测试();$classTest->display_func();

您的结果 = 标志为:1

====

=========================================

你也可以这样编写代码

类测试 {

public $flag;
private function func_one() {
    $this->flag = 1;
    return $this->flag;
}
public function display_func() {
    echo 'Flag is: '.$this->func_one();
}

}

$classTest = 新测试();$classTest->display_func();

相关文章: