php对象数组属性(如果它们不存在)

时间:2011-09-25 16:52:18

标签: php arrays object

首先,我想我已经尝试了所遇到的所有解决方案,但仍然存在问题......

facebookResponse Object
(
    [__construct:facebookResponse:private] => 
    [__resp] => stdClass Object
        (
            [data] => stdClass Object
                (
                    [id] => 00000000000
                    [name] => Random.User
                    [first_name] => Random
                    [last_name] => User
                    [link] => http://www.facebook.com/Random.User
                    [username] => Random.User
                    [birthday] => 11/10/1980
                    [gender] => male
                    [email] => xxxx@Random.User.com
                    [timezone] => -7
                    [locale] => en_US
                    [verified] => 1
                    [updated_time] => 2011-08-22T02:56:33+0000
                )

            [code] => 200
            [time] => 0.600512
            [length] => 386
            [type] => text/javascript; charset=UTF-8
        )

)

以上是输出对象的示例。我正在寻找细节,其中一些有时不存在。如果它们不存在,我只想抓住这个事实,将它标记为我的数据库“无”,然后转到下一个。对我来说,我不是很幸运。无论我如何接近它,我都会遇到错误。

我是否执行isset()!isset()empty()!empty()或上面的某些组合尝试捕获它,如空,null,未定义,空白或者甚至不存在。

示例您将看到上面的示例输出中没有location-> name对象。所以我最新的attemt(s)来抓住它而不是

if((isset($fb_result->location->name))
    AND(!empty($fb_result->location->name))
   AND(trim($fb_result->location->name) !== ""))
   {
        $currenthome = $fb_result->location->name;
    }
   else
   {
    $currenthome = "none";
    }

我上面的错误是“未定义的属性:stdClass :: $ location”,无论我如何抓住它,我仍然会得到同样的东西。

2 个答案:

答案 0 :(得分:1)

您可能需要查看Reflection API

答案 1 :(得分:1)

您需要首先检查“位置”属性,然后再深入

if(!empty($fb_result->location) && !empty($fb_result->location->name))
    $currenthome = $fb_result->location->name;
else
    $currenthome = 'none';