Как получить вложенные значения из json в php

У меня есть файл json, который я хотел использовать в качестве базы данных просто потому, что мне нравится структура json, чем mysql php, у меня есть следующий код

$query = "people.json";
$json = file_get_contents($query);
$data = json_decode($json, true);
$faq = $data['FAQ'];
$questions = $faq['Questions']['Number'];
foreach($questions as $question){
    $number = $question['number'];
    $question = $question['question'];
    $answer = $question['answer'];
?>

{
    "FAQ":{
        "Questions":{
            "Number":{
                "1":{
                    "number":"one",
                    "question":"How do i trade with Marketwh steam bots?",
                    "answer":"You can Trade one of 2 ways <br> Send a Trade offer to one of our Steam Bots <br> & #8226; find the item on our site see the price of it and then click trade and send a trade offer like normal."
                },
                "2":{
                    "number":"two",
                    "question":"What is a Steam Bot?",
                    "answer":"A Steam Bot is an automated Trading Bot that will automatcally accept offers sent to it that are within the item price range of buying or selling."
                },
                "3":{
                    "number":"three",
                    "question":"What is a Steam Bot?",
                    "answer":"A Steam Bot is an automated Trading Bot that will automatcally accept offers sent to it that are within the item price range of buying or selling."
                },
                "4":{
                    "number":"four",
                    "question":"",
                    "answer":""
                },
                "5":{
                    "number":"five",
                    "question":"",
                    "answer":""
                }
            }
        }
    }
}

$ number выводит "один"

$ question выводит вопрос

$ answer выводит первую букву в переменной вопроса, для первой буквы это «H», а для второго и третьего ответа - это «W». как вы можете видеть в приведенном выше коде, у меня он есть в foreach, который должен циклически проходить через каждое из чисел 1-4 в массиве FAQ

Я использую это для вызова php для базы данных, я могу просто редактировать и изменять материал на моем веб-сайте, а FAQ - это страница часто задаваемых вопросов, которую я буду использовать

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
138
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

$ questions - это объект, а не список. Я ожидаю, что вам нужно изменить свой формат json, чтобы вопросы были в списке. Как следующее:

{
  "FAQ": {
    "Questions": {
      "Number": [
        {
          "number": "one",
          "question": "How do i trade with Marketwh steam bots?",
          "answer": "You can Trade one of 2 ways <br> Send a Trade offer to one of our Steam Bots <br> & #8226; find the item on our site see the price of it and then click trade and send a trade offer like normal."
        },
        {
          "number": "two",
          "question": "What is a Steam Bot?",
          "answer": "A Steam Bot is an automated Trading Bot that will automatcally accept offers sent to it that are within the item price range of buying or selling."
        },
        {
          "number": "three",
          "question": "What is a Steam Bot?",
          "answer": "A Steam Bot is an automated Trading Bot that will automatcally accept offers sent to it that are within the item price range of buying or selling."
        },
        {
          "number": "four",
          "question": "",
          "answer": ""
        },
        {
          "number": "five",
          "question": "",
          "answer": ""
        }
      ]
    }
  }
}

хорошо, я понимаю, что такое [{}], но когда я вызываю значения, он говорит "Предупреждение: недопустимый аргумент для foreach ()"

Lonster_Monster 27.09.2018 06:59

Неважно, это сработало, как я хотел, в первую очередь, так Не сработало, это было

Lonster_Monster 27.09.2018 07:08

Как сказал user3720435, обновите свой JSON, чтобы сделать Numberarray ([]) вместо Object ({}). Вы не можете перебирать объекты, как хотите, однако это может быть достигнуто с помощью массива. Пожалуйста, просмотрите следующую информацию по вашему конкретному вопросу.

https://so.amarokstudios.com/NestedJSONValues/

Ответ принят как подходящий

У меня был в исходном вопросе

$query = "people.json";
$json = file_get_contents($query);
$data = json_decode($json, true);
$faq = $data['FAQ'];
$questions = $faq['Questions']['Number'];
foreach($questions as $question){
    $number = $question['number'];
    $question = $question['question'];
    $answer = $question['answer'];
?>

Я изменил код в php вот так

$data = json_decode($json, true);
$questions = $data['FAQ']['Questions']['Number'];
foreach($questions as $quest){
    $number = $quest['number'];
    $question = $quest['question'];
    $answer = $quest['answer'];
?>

Я вызвал $ question в foreach, и однажды после этого я изменил $ question в foreach на $ quest, и он исправил его, как только я понял, что это, вероятно, противоречиво, и json на исходный способ, о котором я спросил, и Я пробовал использовать [{}] способ сделать это как массив, но для этого нужен объект, и вывод такой же, как я хотел, спасибо за ответы, и я рад, что понял, что не так

Другие вопросы по теме