如何遍历所有 Amazon API 数组 Book 结果为 PHP

How to loop through all Amazon API array Book results in PHP

我正在尝试消费亚马逊产品 API,我选择根据用户搜索查询单独搜索书籍。但是,在将响应转换为数组后,我无法在不必指定索引的情况下遍历所有结果。 以下是我的代码:

  <div class="album py-5 bg-light">
    <div class="container">

      <div class="row">

        <?php 

          foreach($formattedResponse as $response) { 

            ?>

          <div class="col-md-8">            
          <div class="card mb-4 box-shadow">
            <img class="card-img-top" data-src="" alt="Card image cap">
            <div class="card-body">
              <p class="card-text"></p>
              <div class="d-flex justify-content-between align-items-center">
                <div class="btn-group">
                  <button type="button" class="btn btn-sm btn-outline-secondary">Arthur: <?php echo $response['Item'][0]['ItemAttributes']['Author']; ?></button>
                  <button type="button" class="btn btn-sm btn-outline-secondary">Title: <?php echo $response['Item'][0]['ItemAttributes']['Title']; ?></button>
                </div>
                <small class="text-muted">Price: <?php echo $response['Item'][0]['ItemAttributes']['ListPrice']['FormattedPrice']; ?> </small>
              </div>
            </div>
          </div>
        </div>


        <?php 

        } 
        ?>

      </div>
    </div>
  </div>

显示结果完美无缺,唯一的缺点是,它只从当前的数千个返回的图书响应中获取第一个索引,因为如果我拿走 [0],我使用了 $response['Item'][0]从我得到一个错误.. 下面是结果

  Arthur: Harry Boone Porter
  Title: The Day of Light
  Price: .00

我的问题: 该数组包含 [0]、[1]、[2] 到 [1000] 如何获取上述格式的所有书籍结果而不是我正在使用的第一个索引。

这是我的数组代码片段:https://pasteio.com/xlsoTVWJLGBO

好像格式化响应是命名数组,不必用foreach循环迭代,如果我没记错的话,你只需要:

  1. 传递给视图的不是 $formattedResponse,而是 $formattedResponse['item'],而不是遍历它。让我们称之为 $items.
$items = $formattedResponse['item'];
// pass $items to the view.
  1. ['item'] 元素中,您有一个带数字的索引数组。所以遍历它
<?php foreach ($items as $item): ?>
    ... html here
   <?= htmlspecialchars($item['ItemAttributes']['ListPrice']['FormattedPrice']) ?>
<?php endforeach; ?>

不要忘记为您的视图转义输出。使用 Twig、Blade 或 Yii 中的 Html::encode($var) 之类的东西。 How to escape output in PHP

为了使多维大数组的调试更容易,从 composer 安装 larapack/dd,并添加

 dd($largeArray)

在你的代码的任何地方。就像 var_dump,但更容易寻找人类 ;)