检查公共对象属性是否设置为变量作为指针

时间:2014-06-01 14:33:47

标签: php object

奥拉!

所以我得到了一个$ _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的基础知识有变化吗?

1 个答案:

答案 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。