Ola!
所以我得到了一个$_POST,看起来像:
Array
(
[name] => FooBar
[sobject] => tbl_character
[id] => 102
)
像这样的"SmartObject">
SmartObject Object
(
[_settings] => Array
(
[table] => tbl_character
[ignores] => Array
(
[0] => leaderid
[1] => typeid
[2] => senderid
[3] => recieverid
[4] => imageid
[5] => fileid
[6] => professionid
[7] => id
)
[prefix] => tbl_
)
[id] => 102
[worldid] =>
[accountid] => 110
[zoneid] =>
[raceid] => 1
[imageid] =>
[name] => asd
... blabla more data
)
我想做的是循环遍历$_POST,并检查密钥是否与SmartObject上的任何公共集属性匹配,如下所示:
foreach($_POST as $key => $value) {
if(isset($object->{$key})) {
$object->{$key} = $value;
}
}
当一个值存在时(例如,对于id(,isset会触发并返回true,但当值不存在时,isset不会返回true。
empty()
检查是否设置了值。
isset()
应该检查"变量"或"属性"是否存在,而不一定设置为任何值,对吧?
我相信这个代码在一年前对我来说很好,但现在if语句不会在name上触发。我做错什么了吗?php的基本原理改变了吗?
怎么样(如果您使用的是PHP>=5.1(:
foreach($_POST as $key => $value) {
if (property_exists($object, $key)) {
$object->$key = $value;
}
}
以下是文档:http://www.php.net/manual/en/function.property-exists.php
来自官方文件:
注意:与isset((相反,property_exists((即使在该属性的值为NULL。