我有以下PHP5代码:
$request = NULL;
$request->{"header"}->{"sessionid"} = $_SESSION['testSession'];
$request->{"header"}->{"type"} = "request";
第2行和第3行产生以下错误:
PHP严格标准:从空值创建默认对象
如何解决此错误?
答案 0 :(得分:40)
Null不是对象,因此您无法为其指定值。从你正在做的事情来看,你需要一个associative array。如果您已设置使用对象,则可以使用stdClass
//using arrays
$request = array();
$request["header"]["sessionid"] = $_SESSION['testSession'];
$request["header"]["type"] = "request";
//using stdClass
$request = new stdClass();
$request->header = new stdClass();
$request->header->sessionid = $_SESSION['testSession'];
$request->header->type = "request";
我建议使用数组,因为它是一个更简洁的语法(可能)是相同的底层实现。
答案 1 :(得分:13)
摆脱$ request = NULL并替换为:
$request = new stdClass;
$request->header = new stdClass;
您正在尝试写入NULL而不是实际对象。
答案 2 :(得分:4)
要取消错误:
error_reporting(0);
修复错误:
$request = new stdClass();
HTH
答案 3 :(得分:1)
不要尝试在null值上设置属性?改为使用关联数组。