Как анализировать результаты вложенных данных в таблице с помощью цикла foreach

#php #json #api #curl

#php #json #API #завиток #curl

Вопрос:

Я пытаюсь использовать curl для анализа и отображения результатов в таблице из DPLA API. Я подумал, что для этого я бы использовал цикл foreach, но у меня возникли проблемы с доступом к вложенным данным. Что я упускаю из виду?

 <?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dp.la/v2/items?q=weaselsamp;api_key=mypersonalkey");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json_response = curl_exec($ch);
$myArray = json_decode($json_response, true);
curl_close($ch);
?>
    <h2>Part 1</h2> 
        <table>
            <tr>
                <th>title</th>
                <th>creator</th>
            </tr>
<?php
        foreach ($myArray as $post){
            echo "<tr>";
            echo "<td>{$post[title]}</td>";
            echo "<td>$post[creator]</td>";
            echo "</tr>";
            echo "<pre>";
         }
?>
  

Сейчас я довольно новичок в php и посещал занятия, чтобы узнать больше. Я уже пару месяцев учусь онлайн, но мне не помешала бы дополнительная помощь. Я просмотрел сайт php doc и api.dp.la сайт, но все равно чувствую себя немного потерянным.

Я хотел бы видеть результаты для 1 из многих результатов. Верните 1 название и создателя.

Ответ №1:

Я думаю, вы хотите использовать сложный фигурный синтаксис.

Если вы хотите получить одно из многих, возможно, вы могли бы проверить одно из значений из post, используя an if . Если оператор if может соответствовать более чем 1 значению, и вам нужно только первое, которое вы найдете, вы можете использовать break для выхода из цикла.

Вы можете обновить свой to, например:

 foreach ($myArray as $post){
    if ($post["title"] === "my title") {
        echo "<tr>";
        echo "<td>{$post["title"]}</td>";
        echo "<td>{$post["creator"]}</td>";
        echo "</tr>";
        echo "<pre>";
    }
}
  

Обратите внимание, чтобы поместить ключевые title имена и creator между кавычками.

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

1. Спасибо! В конечном итоге я использовал print_r, чтобы разбить вложенность.

Ответ №2:

 foreach ($myArray['docs'] as $post) {
            echo "<tr>";
            echo "<td>";
            echo($post['sourceResource']['creator'][0]);
            echo "<td>";
            echo($post['sourceResource']['description'][0]);
            echo "</tr>";
            break;
  

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

1. В конечном итоге это оказался лучший способ разрешить цикл foreach.