一个明显的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();