Проблемы с получением категорий блогов в моем API массива - PullRequest
0 голосов
/ 16 июня 2020

У меня есть этот API для моего блога wordpress.

{

  "count": 1,
  "totalPage": 1,
  "page": 1,
  "posts": [
    {
      "ID": 7809,
      "title": "Why Is It The Best Time To Buy In Perth?",
      "author": "Martin",
      "categories": [
        {
          "slug": "/buyers",
          "text": "Buyers"
        },
        {
          "slug": "/sellers",
          "text": "Sellers"
        }
      ],
      "content": "Lorem Ipsum Dolor"
    },
}

Я могу легко получить title по echo $post['title'], то же самое с author по echo $post['author'] . Моя проблема в том, что я не могу получить значение категорий.

Ожидаемый результат:

<a href="/buyers">Buyers</a>
<a href="/sellers">Sellers</a>

Это то, что я пробовал echo $post['categories'], но результат ARRAY

Итак, я попробовал еще один, используя foreach:

<?php  foreach ( $post['categories'] as $nameCategory) { ?>
    <a href="<?php echo $nameCategory->slug?>"><?php echo $nameCategory->text; ?></a>  
<?php } ?>  

Но ничего не выводится, он пуст. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Я думаю, что проблема в вашем случае заключается в типе переменной, которую вы используете для отображения информации. Я не уверен, как вы используете json_decode в своем коде PHP, но если вы используете $post['title'], тогда ваш ответ преобразуется в ассоциативный массив PHP.

Итак, когда вы выполняя свой foreach, вместо использования stdClass вы должны использовать такой массив:

<?php  foreach ( $post['categories'] as $nameCategory) { ?>
    <a href="<?php echo $nameCategory['slug']?>"><?php echo $nameCategory['text']; ?></a>  
<?php } ?>  

Если вы выполняете print_r($post) или var_dump($post), вы должны увидеть типы переменных, которые вы используете.

Кроме того, при использовании массива в качестве объекта вы должны получать сообщение об ошибке от PHP, поэтому вам следует проверить конфигурацию php .ini, чтобы увидеть, отключены ли ваши сообщения об ошибках или в этом случае сохраняется в файл журнала.

0 голосов
/ 16 июня 2020

Ваша структура данных выглядит как JSON. Но поскольку вы можете извлечь из этого некоторые ценности, я не буду об этом беспокоиться. Причина, по которой вы не получаете правильного значения, скорее всего, связана с неправильным таргетингом. Этот конкретный набор данных вложен, так сказать, в другой «массив»; просто войдите в него, используя правильное имя, например:

echo $post['categories']['slug'];
echo $post['categories']['text'];
...