Check属性存在 - 将json转换为stdObject,然后将value或null插入db

Gar*_*bit 2 php database api json codeigniter

我正在调用API并处理JSON响应,然后将其解码为stdObject.然后我用值或NULL将记录插入到db中.但是我发现我的请求并不总是带有值

例:

[1] => stdClass Object
(
    [created_at] => Wed, 26 Oct 2011 09:58:47 +0000
    [entities] => stdClass Object
        (
        )

    [from_user] => powpowpow
    [from_user_id] => 12345
    [from_user_id_str] => 12345
    [geo] => 
    [location] => UK
    [id] => 1245
    [id_str] => 12345
    [iso_language_code] => en
    [metadata] => stdClass Object
        (
            [result_type] => recent
        )

    [profile_image_url] => http://a3.twimg.com/profile_images//.jpg
    [source] => <a href="http://twitter.com/">web</a>
    [text] => some message!
    [to_user_id] => 
    [to_user_id_str] => 
)
Run Code Online (Sandbox Code Playgroud)

我发现每个调用,位置,to_user_id和screen_name都没有返回一些属性(在这个调用中甚至没有返回)

我所做的是创造一种方法;

function _nullify($var){
    if(isset($var)){
        return $var = empty($var) ? NULL : $var;
    } else {
        return NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该允许我检查属性是否存在,如果有值,则返回它,否则返回NULL,这样我就可以输入到db

但是这种方法似乎不起作用.

我希望你们能提供帮助,

非常感谢,

安迪

Sha*_*ali 7

正如我所看到的,您正在尝试检查对象中是否存在密钥,您可以使用PHP的property_exists函数.

function _nullify($object, $key){
    if(property_exists($object, $key))
        return empty($object->$key) ? NULL : $object->$key;
    else
        return NULL;
}
Run Code Online (Sandbox Code Playgroud)

夏嘉曦.