代码之家  ›  专栏  ›  技术社区  ›  vhiktordom

如何在PHP中循环浏览所有Amazon API数组结果

  •  2
  • vhiktordom  · 技术社区  · 7 年前

    我正在尝试使用亚马逊产品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>
    

    显示结果的工作非常完美,唯一的缺点是,它只获取返回的图书响应的第一个索引,因为我使用了 $response['Item'][0] 如果我拿走 [0] 从中,我得到一个错误。。以下是结果

      Arthur: Harry Boone Porter
      Title: The Day of Light
      Price: $8.00
    

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Liam Kernighan    7 年前

    似乎格式化的响应是命名的数组,不必使用foreach循环进行迭代,如果我没有弄错的话,您只需要:

    1. 传递到视图,而不是 $格式化响应 但是 $formattedResponse['item'] 不要重复它。我们叫它 $个项目
    $items = $formattedResponse['item'];
    // pass $items to the view.
    
    1. 在里面 ['item'] 元素有一个带数字的索引数组。因此,请反复查看它
    <?php foreach ($items as $item): ?>
        ... html here
       <?= htmlspecialchars($item['ItemAttributes']['ListPrice']['FormattedPrice']) ?>
    <?php endforeach; ?>
    

    不要忘记为视图转义输出。使用树枝、刀片或类似的东西 Html::编码($var) 来自Yii。 How to escape output in PHP

    使多维大型阵列的调试更容易安装 larapack/日 来自composer,并添加

     dd($largeArray)
    

    在代码的任何地方。这就像var\u dump,但更容易找到人;)