如何在数组中获取对象的属性?

时间:2014-12-14 01:14:06

标签: php arrays object foreach

我在$ res中使用了一些Web服务和数据 with print_r($ res);

结果:

  

stdClass对象([状态] => 1000 [信息] =>   { “产品”:{ “TrafficCard”:[{ “产品”:{ “service_id为”: “6”, “名”:“مجوز   عبورازطرحترافیکازساعت8   صبح “ ”PLAN_NAME“: ”TC-8“, ”价格“: ”24000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”6“, ”名“:” مجوز   عبورازطرحترافیکازساعت10   صبح”, “PLAN_NAME”: “TC-10”, “价格”: “18000”, “存在”:真}}], “礼金券”:{ “的iTunes”:[{ “产品”:{ “service_id为”: “7”, “名”:“گیفت   کارتآیتونز10   دلاری “ ”PLAN_NAME“: ”GC-的iTunes-10“, ”价格“: ”38000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتآیتونز15   دلاری “ ”PLAN_NAME“: ”GC-的iTunes-15“, ”价格“: ”55000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتآیتونز25   دلاری “ ”PLAN_NAME“: ”GC-的iTunes-25“, ”价格“: ”91000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتآیتونز50   دلاری”, “PLAN_NAME”: “GC-的iTunes-50”, “价格”: “185000”, “存在”:真正}}], “微软”:[{ “产品”:{ “service_id为”: “7” , “名”:“گیفت   کارتمایکروسافت25   دلاری “ ”PLAN_NAME“: ”GC-微软-25“, ”价格“: ”91000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتمایکروسافت50   دلاری”, “PLAN_NAME”: “GC-微软-50”, “价格”: “185000”, “存在”:真正}}], “GOOGLEPLAY”:[{ “产品”:{ “service_id为”: “7” , “名”:“گیفت   کارتگوگلپلی10   دلاری “ ”PLAN_NAME“: ”GC-GOOGLEPLAY-10“, ”价格“: ”38000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتگوگلپلی15   دلاری “ ”PLAN_NAME“: ”GC-GOOGLEPLAY-15“, ”价格“: ”55000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتگوگلپلی25   دلاری “ ”PLAN_NAME“: ”GC-GOOGLEPLAY-25“, ”价格“: ”91000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتگوگلپلی50   دلاری”, “PLAN_NAME”: “GC-GOOGLEPLAY-50”, “价格”: “185000”, “存在”:真}}], “亚马逊”:[{ “产品”:{ “service_id为”: “7” , “名”:“گیفت   کارتآمازون5   دلاری “ ”PLAN_NAME“: ”GC-亚马逊-5“, ”价格“: ”18000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتآمازون10   دلاری “ ”PLAN_NAME“: ”GC-亚马逊-10“, ”价格“: ”36000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” گیفت   کارتآمازون25   دلاری”, “PLAN_NAME”: “GC-亚马逊-25”, “价格”: “88000”, “存在”:真}}], “的Xbox”:[{ “产品”:{ “service_id为”: “7” , “名”:“اکانت   GoldیکسالهXbox   住 “ ”PLAN_NAME“: ”GC-的Xbox-1Y“, ”价格“: ”216000“, ”存在“:真正}},{ ”产品“:{ ”service_id为“: ”7“, ”名“:” اکانت   GoldسهماههXbox   住”, “PLAN_NAME”: “GC-的Xbox-3M”, “价格”: “91000”, “存在”:真正}}], “的PlayStation”:[{ “产品”:{ “service_id为”: “7” , “名”:“گیفت   کارت10دلاریPlayStation   网络”, “PLAN_NAME”: “GC-的PlayStation-10”, “价格”: “38000”, “存在”:真}}], “PlayStationPlus”:[{ “产品”:{ “service_id为”: “7” , “名”:“گیفت   کارتسهماههPlayStation   加 “ ”PLAN_NAME“: ”GC-PlayStationPlus-3M“, ”价格“: ”70000“, ”存在“:真正}}]}, ”防病毒“:{ ”ESET“:[{ ”产品“:{” service_id为 “:” 8" , “名”:“آنتی   ویروسموبایلنود   32" , “PLAN_NAME”: “AN-ESET-MOB-1U”, “价格”: “20000”, “存在”:真}}], “BitDefender的”:[{ “产品”:{ “service_id为”:” 8" , “名”:“آنتی   ویروسموبایلیبیتدیفندر   2014" , “PLAN_NAME”: “AN-的BitDefender-MOB-1U”, “价格”: “25000”, “存在”:真正}},{ “产品”:{ “service_id为”: “8”, “名” :“بیت   دیفندر加   2014" , “PLAN_NAME”: “AN-的BitDefender-PC-1U”, “价格”: “65000”, “存在”:真正}}]}}}   )

我需要阵列中的所有产品: 喜欢

TrafficCard {
serviceid =>  ...
name => ....
plan_name => ... 
price => ....
existence => ....
}

也是这样的 礼品卡,防病毒,XBox,Playstation和...

2 个答案:

答案 0 :(得分:1)

使用此:

function object_to_array($data)
{
    if (is_array($data) || is_object($data))
    {
        $result = array();
        foreach ($data as $key => $value)
        {
            $result[$key] = object_to_array($value);
        }
        return $result;
    }
    return $data;
}

$json = '{"Products":{"TrafficCard":[{"Product":{"service_id":"6","name":"مجوز عبور از طرح ترافیک از ساعت 8 صبح","plan_name":"TC-8","price":"24000","existence":true}},{"Product":{"service_id":"6","name":"مجوز عبور از طرح ترافیک از ساعت 10 صبح","plan_name":"TC-10","price":"18000","existence":true}}],"GiftCard":{"iTunes":[{"Product":{"service_id":"7","name":"گیفت کارت آیتونز 10 دلاری","plan_name":"GC-iTunes-10","price":"38000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت آیتونز 15 دلاری","plan_name":"GC-iTunes-15","price":"55000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت آیتونز 25 دلاری","plan_name":"GC-iTunes-25","price":"91000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت آیتونز 50 دلاری","plan_name":"GC-iTunes-50","price":"185000","existence":true}}],"Microsoft":[{"Product":{"service_id":"7","name":"گیفت کارت مایکروسافت 25 دلاری","plan_name":"GC-Microsoft-25","price":"91000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت مایکروسافت 50 دلاری","plan_name":"GC-Microsoft-50","price":"185000","existence":true}}],"GooglePlay":[{"Product":{"service_id":"7","name":"گیفت کارت گوگل پلی 10 دلاری","plan_name":"GC-GooglePlay-10","price":"38000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت گوگل پلی 15 دلاری","plan_name":"GC-GooglePlay-15","price":"55000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت گوگل پلی 25 دلاری","plan_name":"GC-GooglePlay-25","price":"91000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت گوگل پلی 50 دلاری","plan_name":"GC-GooglePlay-50","price":"185000","existence":true}}],"Amazon":[{"Product":{"service_id":"7","name":"گیفت کارت آمازون 5 دلاری","plan_name":"GC-Amazon-5","price":"18000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت آمازون 10 دلاری","plan_name":"GC-Amazon-10","price":"36000","existence":true}},{"Product":{"service_id":"7","name":"گیفت کارت آمازون 25 دلاری","plan_name":"GC-Amazon-25","price":"88000","existence":true}}],"XBox":[{"Product":{"service_id":"7","name":"اکانت Gold یک ساله Xbox Live","plan_name":"GC-XBox-1Y","price":"216000","existence":true}},{"Product":{"service_id":"7","name":"اکانت Gold سه ماهه Xbox Live","plan_name":"GC-XBox-3M","price":"91000","existence":true}}],"PlayStation":[{"Product":{"service_id":"7","name":"گیفت کارت 10 دلاری PlayStation Network","plan_name":"GC-PlayStation-10","price":"38000","existence":true}}],"PlayStationPlus":[{"Product":{"service_id":"7","name":"گیفت کارت سه ماهه PlayStation Plus","plan_name":"GC-PlayStationPlus-3M","price":"70000","existence":true}}]},"Antivirus":{"Eset":[{"Product":{"service_id":"8","name":"آنتی ویروس موبایل نود 32","plan_name":"AN-Eset-MOB-1U","price":"20000","existence":true}}],"BitDefender":[{"Product":{"service_id":"8","name":"آنتی ویروس موبایلی بیت دیفندر 2014","plan_name":"AN-BitDefender-MOB-1U","price":"25000","existence":true}},{"Product":{"service_id":"8","name":"بیت دیفندر Plus 2014","plan_name":"AN-BitDefender-PC-1U","price":"65000","existence":true}}]}}}';

echo print_r(object_to_array(json_decode($json)),true);

结果:

Array
(
    [Products] => Array
        (
            [TrafficCard] => Array
                (
                    [0] => Array
                        (
                            [Product] => Array
                                (
                                    [service_id] => 6
                                    [name] => مجوز عبور از طرح ترافیک از ساعت 8 صبح
                                    [plan_name] => TC-8
                                    [price] => 24000
                                    [existence] => 1
                                )

                        )

                    [1] => Array
                        (
                            [Product] => Array
                                (
                                    [service_id] => 6
                                    [name] => مجوز عبور از طرح ترافیک از ساعت 10 صبح
                                    [plan_name] => TC-10
                                    [price] => 18000
                                    [existence] => 1
                                )

                        )

                )


etc...

答案 1 :(得分:0)

您可以尝试将其转换为数组

$trafficCardArray = (array) $stdClass;

或者使用json

$array = json_decode($string, true);