类变量的问题,在if函数中使用它们

时间:2009-12-09 07:40:47

标签: php class function

我在访问类中的变量时遇到问题,这是代码

class Text {

      private $text = '';

      private $words = '';
      // function to initialise $words
      private  function filterText($value,$type) {
          $words = $this->words;
          echo count($words); // works returns a integer
          if($type == 'length') {
              echo count($words); // not works returns 0
          }
          $this->words = $array;
      }
      // even this fails 
      public function filterMinCount($count) {
         $words = $this->words;
         echo count($words);
         if(true){
           echo 'bingo'.count($words);
         }
      }
}

任何人都可以告诉我原因

3 个答案:

答案 0 :(得分:0)

我注意到的唯一明显的事情是:

$this->words = $array;中的Text::filterText()行是错误的。

您正在将内部属性设置为未定义的变量($array),因此$this->words设置为null。因此,下次您致电count($this->words)时,它将返回0

其次 - 正如其他人提出的那样 - 请在使用时发布整个代码

答案 1 :(得分:0)

缺少变量“$ array”。然后:

<?php
    echo count( '' ); // 1
    echo count( null ); // 0
?>

也许这就是问题?

此致

答案 2 :(得分:0)

我刚刚使用构造函数和一些虚拟数据进行了一些重写,我已经复制了下面的源代码并使用构造函数来演示输出以及它使用类变量的事实。

首先将$ word变量定义为一个数组,我只用两个数据填充它以证明它有效,然后构造函数调用$this->filterText("", "length"),输出2两次,这是正确的,因为数组有其中有两个字符串。然后将$ word数组重置为包含5个值,然后构造函数调用$this->filterMinCount(0),输出5也是正确的。

输出:

  

22

     

5bingo5

希望这有帮助

课文 {

private $text = '';

private $words = array('1', '2');

function __construct()
{
    //calling this function outputs 2, as this is the size of the array
    $this->filterText("", "length");

    echo "<br />";

    $this->filterMinCount(0);
}

// function to initialise $words
private function filterText($value,$type) 
{
    $words = $this->words;

    echo count($words); // works returns a integer

    if($type == 'length') 
    {
        echo count($words); // not works returns 0
    }

    //reset the array
    $this->words = array(1,2,3,4,5);
}

// even this fails 
public function filterMinCount($count) 
{
    $words = $this->words;

    echo count($words);

    if(true)
    {
        echo 'bingo'.count($words);
    }
}

}