【问题标题】:php stdClass : assigning object value to variablephp stdClass:将对象值分配给变量
【发布时间】:2010-08-09 10:35:35
【问题描述】:

有人知道如何将 stdClass 值分配给变量吗?

我有一个 stdClass 对象,当我使用 var_dump($userdetails->emailaddress) 打印它时,它确实将值打印为 String(31)"asdas.@fsdf.com";

但是当我尝试将对象值分配给变量时,可以说:

$to = $userdetails->emailaddress; 

$to 值变为 NULL ...

有人可以帮忙吗?

【问题讨论】:

  • 应该可以的。例如,尝试:php -r '$x = new stdClass; $x->foo = "bar"; $foo = $x->foo; var_dump($foo);' 它将打印“bar”。粘贴您的实际代码,可能还有其他问题。
  • 这应该可以。您能否提供一个显示错误行为的完整示例?您是否检查过这不是标识符问题(例如 $userDetails 而不是 $userdetails)?

标签: php stdclass


【解决方案1】:

听起来你做错了什么,因为

$obj = new StdClass;
$obj->email = 'foo@example.com';
$to = $obj->email;
var_dump($to); // string(15) "foo@example.com"

注意PHP中的变量和对象成员是区分大小写的(不像函数和方法),所以

$to = $obj->eMail;
var_dump($to); // NULL

但是,在这种情况下,您还会收到 PHP 通知

Notice: Undefined property: stdClass::$eMail

最好在开发机器上启用error_reporting(-1) 和PHP.ini 指令display_errors and display_startup_errors


因为它是 CW。随意使用此空间以获得进一步的调试提示

【讨论】:

    【解决方案2】:

    我认为没有错/阻止将值从 stdClass 分配给变量。请检查代码的拼写。

    【讨论】:

      【解决方案3】:

      var 是否公开?

      如果类是这样的:

      class Example
      {
          public $emailaddress;
      
          public function example()
          {
              #do something
          }  
      
      }
      

      那我不明白为什么会有问题。

      【讨论】:

      • 它是一个 StdClass,所以除了 public 之外的任何其他可见性都不应该适用
      • 啊,我从来没有使用过 StdClass,所以我只是假设它是一个示例名称。我的坏脸红
      猜你喜欢
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2014-06-29
      • 2015-03-12
      • 2014-03-04
      相关资源
      最近更新 更多