我在访问类中的变量时遇到问题,这是代码
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);
}
}
}
任何人都可以告诉我原因
答案 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);
}
}
}