Вывод значения ключа в многомерном массиве в php - PullRequest
0 голосов
/ 05 декабря 2018

В моем php-запросе я получил следующие выходные данные:

{"projects":[{"id":127,"name":"efrat","status":{"id":10,"name":"development","label":"development"},"description":"","enabled":true,"view_state":{"id":10,"name":"public","label":"public"},"access_level":{"id":90,"name":"administrator","label":"administrator"},"custom_fields":[{"id":1,"name":"Customer email","type":"email","default_value":"","possible_values":"","valid_regexp":"","length_min":0,"length_max":50,"access_level_r":{"id":10,"name":"viewer","label":"viewer"},"access_level_rw":{"id":10,"name":"viewer","label":"viewer"},"display_report":true,"display_update":true,"display_resolved":true,"display_closed":true,"require_report":false,"require_update":false,"require_resolved":false,"require_closed":false}],"versions":[],"categories":[{"id":93,"name":"Monitor","project":{"id":0,"name":null}},{"id":31,"name":"Proactive","project":{"id":0,"name":null}},{"id":30,"name":"Project","project":{"id":0,"name":null}},{"id":29,"name":"Support","project":{"id":0,"name":null}}]}]}

после использования метода 'json_decode' я получаю следующее: "(

[projects] => Array
    (
        [0] => Array
            (
                [id] => 127
                [name] => myprojectname
                [status] => Array
                    (
                        [id] => 10
                        [name] => development
                        [label] => development
                    )

                [description] =>
                [enabled] => 1
                [view_state] => Array
                    (
                        [id] => 10
                        [name] => public
                        [label] => public
                    )

                [access_level] => Array
                    (
                        [id] => 90
                        [name] => administrator
                        [label] => administrator
                    )

                [custom_fields] => Array
                    (
                        [0] => Array
                            (
                                [id] => 1
                                [name] => Customer email
                                [type] => email
                                [default_value] =>
                                [possible_values] =>
                                [valid_regexp] =>
                                [length_min] => 0
                                [length_max] => 50
                                [access_level_r] => Array
                                    (
                                        [id] => 10
                                        [name] => viewer
                                        [label] => viewer
                                    )

                                [access_level_rw] => Array
                                    (
                                        [id] => 10
                                        [name] => viewer
                                        [label] => viewer
                                    )

                                [display_report] => 1
                                [display_update] => 1
                                [display_resolved] => 1
                                [display_closed] => 1
                                [require_report] =>
                                [require_update] =>
                                [require_resolved] =>
                                [require_closed] =>
                            )

                    )

                [versions] => Array
                    (
                    )

                [categories] => Array
                    (
                        [0] => Array
                            (
                                [id] => 93
                                [name] => Monitor
                                [project] => Array
                                    (
                                        [id] => 0
                                        [name] =>
                                    )

                            )

                        [1] => Array
                            (
                                [id] => 31
                                [name] => Proactive
                                [project] => Array
                                    (
                                        [id] => 0
                                        [name] =>
                                    )

                            )

                        [2] => Array
                            (
                                [id] => 30
                                [name] => Project
                                [project] => Array
                                    (
                                        [id] => 0
                                        [name] =>
                                    )

                            )

                        [3] => Array
                            (
                                [id] => 29
                                [name] => Support
                                [project] => Array
                                    (
                                        [id] => 0
                                        [name] =>
                                    )

                            )

                    )

            )

    )

)"

В моем PHP, как я могу освободить значение объекта "name" (результатом должно быть 'myprojectname') из этого массива?Я перепробовал много циклов foreach, которые ни к чему не привели.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Ваши 'проекты' содержат массив ("projects":[{"id":127, ... }]).Я предполагаю, что массив 'projects' может содержать несколько таких объектов 'project', как это?

{
    "projects":
    [
        {
            "id":127,
            "name":"my-project"
        },
        {
            "id":128,
            "name":"my-other-project"
        }
    ]
}

В этом случае вам нужна стрелка для доступа к свойству имени, например:

foreach ($projects as $project_object) {
    foreach ($project_object as $project) {
        echo $project->name . '<br/>';
    }
}

РЕДАКТИРОВАТЬ:

Iвзял минимальный пример кода ОП и получил ожидаемый результат:

enter image description here

Можете ли вы добавить больше деталей в ваши фрагменты кода в исходном вопросе или предоставитьнам с рабочим примером вашего кода?Есть несколько онлайн-песочниц PHP, которые могут помочь вам в этом.Например: я удалил весь код, который не имеет отношения к вашему вопросу, и получил результат, который вы ищете, двумя различными способами: http://sandbox.onlinephpfunctions.com/code/009c53671fd9545e4fcecfe4b0328974381ee2ce

Это также хорошая идея, чтобы подвести итог всему foreachпетли, которые вы уже пробовали, так что мы можем увидеть, были ли вы там с вашим собственным решением.Таким образом, мы сможем лучше понять ваш вопрос, и это не позволит нам предлагать решения, которые вы уже использовали.

0 голосов
/ 05 декабря 2018

Похоже, у вас есть один объект, который при декодировании фактически имеет только один элемент массива.Таким образом, в вашем случае «myprojectname» может быть просто «$ projects [0] ['name']»

Если много элементов массива, вы можете

foreach ($projects as $project) {
  echo $project[‘name’];
}

EDIT: Я взял предоставленный объект и json_decoded его сам, он не соответствует элементу json_decoded, представленному OP - на первом изображении показан желаемый OP код для var_dump 'name', часть кода также приведена ниже:

$decoded = json_decode($obj);
$projects = $decoded->projects;
$name = $projects[0]->name;

the parsing presented here outputs the 'name' requested by OP the var_dump

...