PHP致命错误:“无法在写入上下文中使用方法返回值....”

时间:2011-07-24 22:52:06

标签: php

尝试使用期望类似的类:

$client->firstname = 'bob';

$client->lastname = 'jones';

所以我想将这些数据传递给数组中的脚本...其中键和值设置在别处。我想逐步通过数组将键和值传递给类。试着用这个:

while($Val = current($CreateClientData)){

    $client->key($CreateClientData) = $Val;
    next($CreateClientData);
}

得到这个:

  

致命错误:无法在写入上下文中使用方法返回值   blahblahpath在第40行。

     

第40行:$ client-> key($ CreateClientData)= $ Val;

我该怎么做?

2 个答案:

答案 0 :(得分:3)

如果$ client已经是某个类的实例,并且$ CreateClientData是一个数组,那么你可能想做这样的事情:

foreach($CreateClientData as $k => $v) {
    $client->{$k} = $v;
}

这当然假定数组中的每个键都是$ client实例的有效成员。如果没有,那么在分配值之前你必须做一些额外的检查,否则你将不得不在try / catch中包装赋值。

修改
关于为什么代码不起作用的答案是因为PHP不允许将类属性赋给返回值的某些函数。在您的情况下,key($CreateClientData)会返回一个键。所以你可以改变你的代码,然后添加

$key = key($CreateClientData);
$client->$key = $Val;

但是,无论如何,foreach循环更加清洁。

答案 1 :(得分:1)

为什么不使用foreach循环?

foreach($CreateClientData as $key => $val) {
    $client->$key = $val;
}