Как извлечь переменную из объекта JSON в php?

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

<div class = "tab-pane" id = "policies">
   <p> 
      <span class = "heading_size">policies:</span>

   </p>
   <p class = "text-justify mb-0 pb-5">
      <?php 
         echo strtolower($data['item']->company_policy->description); 
         ?>
   </p>
</div>

В приведенном выше коде следующая строка echo strtolower($data['item']->company_policy->description);, похоже, ничего не печатает, но для целей отладки, когда я добавил <?php echo $data['item']; ?>, она извлекает следующие фрагменты JSON:

"company_policy": {
    "company_policy_id": 2,
    "uuid": "B4d2aa790",
    "name": "Reasonable",
    "description": "a.) Hello World. ",
    "cutoff_time": 96,
    "percentage": "1.00"
},

Понятно, что для извлечения описание из приведенного выше JSON я должен использовать echo strtolower($data['item']->company_policy->description);, но он, похоже, не извлекает ничего, как описано выше.


Постановка задачи:

Мне интересно, какие изменения я должен внести в приведенный выше echo statement, чтобы я мог успешно извлекать данные из JSON.

json_decode($data['item'], true)
Khoa TruongDinh 16.08.2018 04:10

@KhoaTruongDinh Что мне здесь писать? echo strtolower($data['item']->company_policy->description);

flash 16.08.2018 04:11

@flash Строка в формате JSON с точки зрения PHP - это просто строка. Как было сказано ранее, вам нужно использовать json_decode(). При отладке кода всегда проверяйте включить отчет об ошибках или проверяйте файл журнала ошибок. Вы, вероятно, получили бы какую-то ошибку при этом, потому что пытаетесь рассматривать строку как объект.

Mike 16.08.2018 04:15

@Mike Спасибо за ответ. Вы можете сообщить мне, что именно мне нужно использовать?

flash 16.08.2018 04:35

@Mike, как вместо этого эха strtolower($data['item']->company_policy->description);, что я должен использовать?

flash 16.08.2018 04:37

Вы читали ссылку в комментарии Пола Кровеллы выше?

Mike 16.08.2018 04:37

да я читал его комментарий.

flash 16.08.2018 04:43

@flash Вы перешли по ссылке в его комментарии, перешли на другую страницу и прочитали там первый ответ? Это довольно подробно.

Mike 16.08.2018 04:44
Стоит ли изучать 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 и хотите разрабатывать...
0
8
363
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно документации, вам нужно указать, хотите ли вы ассоциативный массив вместо объекта из json_decode, это будет код: json_decode ($ jsondata, истина);

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

Сначала вы декодируете данные json с помощью json_decode

<?php $jsonData =  json_decode($data['item'], true); ?>

<div class = "tab-pane" id = "policies">
   <p> 
      <span class = "heading_size">policies:</span>

   </p>
   <p class = "text-justify mb-0 pb-5">
      <?php 
         echo strtolower($jsonData['company_policy']['description']); 
         ?>
   </p>
</div>

Хорошо, это сработало. Спасибо за помощь. Мне интересно, почему это не работает на моем пути? Мне это очень любопытно.

flash 16.08.2018 05:26

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