来自一个明显的PHP新手的问题。
我有一个内部有两个函数的类。我试图使用第二个函数检查第一个函数的输出(如下面的代码中所示)。这个问题是输出(1)已经显示在if语句行中。结果如下:
1Flag是: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();
答案 0 :(得分:1)
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();
答案 1 :(得分:0)
从echo
func_one()
答案 2 :(得分:0)
将返回值存储在变量中并对其进行比较
if ( !empty( $this->func_one() ) ){
echo 'Flag is: ';
$this->func_one();
}
应该是
$val=$this->func_one();
if (!empty($val)){
echo "Flag is: $val";
}
同时从func_one()
中删除回声,只返回值。这允许您只调用一次方法,并根据返回的值做出决定。
答案 3 :(得分:0)
您的条件语句:if ( !empty( $this->func_one() ) )
来电func_one()
和func_one()
的第二行是echo $this->flag;
。这就是输出显示在if语句中的原因。
答案 4 :(得分:0)
您需要从第一个功能中删除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.
}
答案 5 :(得分:0)
您可以从第二个函数中删除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 = new Test(); $ 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 = new Test(); $ classTest-> display_func();