奥拉!
所以我得到了一个$ _POST看起来像:
Array
(
[name] => FooBar
[sobject] => tbl_character
[id] => 102
)
和#34; 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语句不会触发名字。难道我做错了什么? php的基础知识有变化吗?
答案 0 :(得分:1)
如果你使用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()即使返回TRUE也是如此 该属性的值为NULL。