【问题标题】:how to fetch data from json? [duplicate]如何从json中获取数据? [复制]
【发布时间】:2020-02-10 12:35:18
【问题描述】:

我在 json 中有类似的数据:

stdClass Object
(
  [contacts] => stdClass Object
    (
        [14] => stdClass Object
            (
                [data] => stdClass Object
                    (
                        [email] => veer@gmail.com
                        [first_name] => veer
                        [last_name] => 
                        [user_id] => 16
                        [owner_id] => 0
                        [optin_status] => 0
                        [date_created] => 2020-01-20 13:14:54
                        [ID] => 14
                        [gravatar] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [age] => 
                    )

                [meta] => stdClass Object
                    (
                        [preferences_changed] => 1579526094
                        [user_login] => veer
                        [profile_picture] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [birthday] => 
                    )

                [tags] => Array
                    (
                        [0] => 92
                        [1] => 13
                        [2] => 12
                        [3] => 9
                    )

                [files] => Array
                    (
                    )

            )

        [9] => stdClass Object
            (
                [data] => stdClass Object
                    (
                        [email] => singh.pratibha1432@gmail.com
                        [first_name] => Pratibha
                        [last_name] => Singh
                        [user_id] => 8
                        [owner_id] => 0
                        [optin_status] => 0
                        [date_created] => 2020-01-20 13:14:54
                        [ID] => 9
                        [gravatar] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [age] => 
                    )

                [meta] => stdClass Object
                    (
                        [preferences_changed] => 1579526094
                        [user_login] => pratibha
                        [profile_picture] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [birthday] => 
                    )

                [tags] => Array
                    (
                        [0] => 94
                        [1] => 93
                        [2] => 92
                        [3] => 91
                        [4] => 82
                        [5] => 15
                        [6] => 14
                        [7] => 13
                        [8] => 9
                    )

                [files] => Array
                    (
                    )

            )

        [4] => stdClass Object
            (
                [data] => stdClass Object
                    (
                        [email] => singh.dev1432@gmail.com
                        [first_name] => Devesh
                        [last_name] => Singh
                        [user_id] => 7
                        [owner_id] => 0
                        [optin_status] => 0
                        [date_created] => 2020-01-20 13:14:54
                        [ID] => 4
                        [gravatar] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [age] => 
                    )

                [meta] => stdClass Object
                    (
                        [preferences_changed] => 1579526094
                        [user_login] => devesh
                        [profile_picture] => http://localhost:8888/wordpress/wp-content/themes/wp_lms/assets/images/avatar.jpg
                        [birthday] => 
                    )

                [tags] => Array
                    (
                        [0] => 93
                        [1] => 92
                        [2] => 15
                        [3] => 12
                        [4] => 11
                        [5] => 9
                    )

                [files] => Array
                    (
                    )

            )

        [2] => stdClass Object
            (
                [data] => stdClass Object
                    (
                        [email] => admin@gmail.com
                        [first_name] => veronica
                        [last_name] => 
                        [user_id] => 1
                        [owner_id] => 0
                        [optin_status] => 0
                        [date_created] => 2020-01-20 13:14:54
                        [ID] => 2
                        [gravatar] => http://localhost:8888/wordpress/wp-content/uploads/avatars/1/5dc525d984494-bpfull.jpg
                        [age] => 
                    )

                [meta] => stdClass Object
                    (
                        [preferences_changed] => 1579526094
                        [user_login] => admin
                        [profile_picture] => http://localhost:8888/wordpress/wp-content/uploads/avatars/1/5dc525d984494-bpfull.jpg
                        [birthday] => 
                    )

                [tags] => Array
                    (
                        [0] => 94
                        [1] => 92
                        [2] => 15
                        [3] => 14
                        [4] => 13
                        [5] => 9
                    )

                [files] => Array
                    (
                    )

            )

    )

[status] => success
)

现在我正在尝试从联系人-> id-> 数据-> 电子邮件中获取“电子邮件”,因此我正在使用此代码。我正在尝试循环那些我可以从所有存在的 id 中获取电子邮件的东西。在 ids 部分,有电子邮件存在的数据和内部数据,所以我如何从所有 id 中获取所有电子邮件。

foreach ((Array)$body->contacts as $id => $values) {
            foreach ($values as $data => $value) {
                $emails =  array('email'=>$value->email);
                return $emails;
            }
        }

但它只返回单个数据:

 Array
(
  [email] => veer@gmail.com
)

我想获取所有这样的电子邮件:

 Array
 (
[0] => Array
    (
        [emails] => veer@gmail.com
    )

[1] => Array
    (
        [emails] => singh.pratibha1432@gmail.com
    )

[2] => Array
    (
        [emails] => singh.dev1432@gmail.com
    )
[3] => Array
    (
        [emails] => admin@gmail.com
    )

)

我怎样才能做到这一点?

【问题讨论】:

  • return 在第一次命中时立即返回,这是在第一次循环迭代中。您想创建一个空数组$emails before 循环,向它添加值 in 循环,returnafter循环!
  • 对对!但是还有另一个问题,您可以看到我们有“数据”/“元”/“标签”/“文件”。所以它为元/标签和文件返回空白,我只想从数据而不是元/标签和文件中获取电子邮件我怎么能做到这一点?
  • foreach ($body->contacts as $contact) $emails[] = $contact->data->email;…!?

标签: php json parsing


【解决方案1】:

定义空数组并在 foreach 运行中将每封电子邮件存储在该变量中。

$emails = array();
foreach ((Array)$body->contacts as $id => $values) {
            foreach ($values as $data => $value) {
                $emails[] =  array('emails'=>$contact->data->email;);

            }
        }
return $emails;

【讨论】:

  • 是的,没错!但是还有另一个问题,您可以看到我们有“数据”/“元”/“标签”/“文件”。所以它为元/标签和文件返回空白,我只想从数据而不是元/标签和文件中获取电子邮件我怎么能做到这一点?
  • 检查已编辑的答案。
  • 不,它不起作用,它给出了输出: Array ([0] => Array( [emails] => vibe3@gmail.com [meta_preferences_changed] => ) [1] => Array ([ emails] => [meta_preferences_changed] => ) [2] => Array ([emails] => [meta_preferences_changed] => ) [3] => Array ([emails] => [meta_preferences_changed] => ) [4] = > 数组([电子邮件] => vibe2@gmail.com [meta_preferences_changed] =>)
  • 期望什么样的输出?
  • 感谢您的努力,我找到了解决方案 foreach ($body->contacts as $contact) $emails[] = $contact->data->email;它提供了数据中的所有电子邮件。
猜你喜欢
  • 1970-01-01
  • 2012-12-10
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多