Обход структуры в PHP

#php

#php

Вопрос:

У меня есть следующая структура:

 Array
(
    [signupbasic] => Array
        (
            [0] => Array
                (
                    [name] => Enter your first name or username
                    [email] => Enter your email address
                    [password] => Enter your password
                    [phone] => Enter your mobile number
                    [message1] => A text will be send to your phone - reply to validate
                    [gender] => Array
                        (
                            [label] => Gender
                            [values] => Array
                                (
                                    [0] => Array
                                        (
                                            [Female] => 1
                                        )

                                    [1] => Array
                                        (
                                            [Male] => 2
                                        )

                                )

                        )

                    [birthday] => Array
                        (
                            [label] => Date of birth
                            [values] => date
                        )

                    [message2] => By clicking on "Continue" below you agree to Terms of Service and Privacy Policy
                )

        )

)
  

Как вы можете видеть, Gender amp; Birthday — это массивы разных размеров. Я не понимаю, как я могу обойти вышеупомянутую структуру из-за разного размера пола и дня рождения.

Как я могу этого добиться?

Комментарии:

1. Какой код вы использовали для декодирования JSON ? Поскольку PHP имеет встроенную функцию, вызываемую json_decode начиная с версии 5.2. Взгляните: php.net/manual/en/function.json-decode.php

2. Привет, Кевин. Я использовал json_decode. Моя проблема в том, что «пол» и «день рождения» — это массивы разных измерений, поэтому я пытаюсь выяснить, как их проанализировать

3. Я не совсем уверен, что понимаю, о чем вы говорите.. В чем ваша проблема? Почему вы не можете обойти объект?

4. Привет, Кевин. Мне нужен обобщенный код для обхода вышеупомянутого json независимо от размера массива. . Если вы заметили в приведенном выше коде, «пол» и «дата рождения» имеют разные измерения. . Не могли бы вы, пожалуйста, предоставить пример кода для того, как вы будете обходить вышеупомянутый json в PHP

Ответ №1:

Почему бы вам просто не получить доступ к этим значениям по отдельности? Точно так же, как вы, вероятно, сделали с name , email и password .

Пусть $o будет JSON, а затем сделайте что-нибудь вроде этого:

 $data = amp;$o['signupbasic'][0];

$genderObj   = $data['gender'];
$birthdayObj = $data['birthday'];
  

Я не совсем уверен, чего вы пытаетесь достичь, не могли бы вы опубликовать какой-нибудь PHP-код?

Ответ №2:

Я не знаю, понял ли я, что вы имели в виду, но будет ли это что-то вроде этого?

 foreach($json['signupbasic'][0]['gender']['values'] as $genderValue) {
  foreach($genderValue as $genderKey => $genderSubVal) {
    echo $genderKey." ".$genderSubVal."nr";
  }
}

foreach($json['signupbasic'][0]['birthday'] as $bdKey => $bdValue) {
  echo $bdKey." ".$bdValue."nr";
}
  

Предполагая, что $json является возвращаемым значением вашего вызова json_decode.

Ответ №3:

Чтобы php понимал json, он должен быть в специальном формате

 {
    "property1": "value1",
    "property2": "value2",
    "property3": "value3",
    "property4": "value4"
}
  

смотрите лучшее объяснение на php.net функция json_decode()