2011-07-05 32 views
0

我是一個班級。我嘗試設置一個對象成員:php空物件成員

$this->list = "hello"; 
print $this->list; 

它返回「hello」;

但是,empty($this->list))始終返回true。

但是,對於非對象成員$tmp = "hello",empty($tmp)返回false。

爲什麼empty()不能用於對象成員?

更新: empty()受我的代碼框架的影響。這就是爲什麼它不能正常工作。

+1

你需要提供一些代碼,你實際上是在一個類中,還是試圖通過'$ this-> list ='hello''創建一個對象?你是否收到任何錯誤訊息? – Kokos

+0

無法重現:'$ s = new stdClass; $ s-> list ='Hello'; var_dump($ s);/* object(stdClass)#1(1){ [「list」] => string(5)「Hello」 } */ var_dump(empty($ s-> list)); /* bool(false)* /' – KingCrunch

+0

我使用了var_dump($ this-> list)。它返回「string(5)hello」。但是空($ this-> list)仍然返回true – chnet

回答

2
<?php 

    class Foo 
    { 
    var $bar; 

    function Bar() 
    { 
     $this->bar = 'hello'; 
     echo "In class: " . (empty($this->bar) ? 'empty' : 'populated') . "\r\n"; 
    } 
    } 

    $foo = new Foo(); 
    $foo->Bar(); 

    echo "Out of class: " . (empty($foo->bar) ? 'empty' : 'populated'); 

輸出:

在類:填充
淘汰類:填充

不知道what you mean。也許提供更多的代碼?此外,每empty()說明書中,以下的值被認爲是

  • 「」(空字符串)
  • 0(0作爲整數)
  • 0.0(0作爲浮動) 9 「0」(0作爲字符串)
  • NULL
  • FALSE
  • 陣列()(空數組)
  • var $ var; (一個聲明的變量,但在一個類中沒有值)

此外,請嘗試在對象上使用var_dump以確認它是您所期望的。

+1

我用var_dump($ this-> list);空($這個 - >列表);它返回字符串(5)hello true。 – chnet

+0

@chnet:這很有趣,它有一些其他的干擾。只需通過基本測試(上圖),對於對象成員進行測試就沒有問題。 –

+0

@chnet:你曾經發現過這個問題嗎? –