如何遍历所有 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循环迭代,如果我没记错的话,你只需要:
- 传递给视图的不是 $formattedResponse,而是 $formattedResponse['item'],而不是遍历它。让我们称之为 $items.
$items = $formattedResponse['item'];
// pass $items to the view.
- 在 ['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,但更容易寻找人类 ;)
我正在尝试消费亚马逊产品 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循环迭代,如果我没记错的话,你只需要:
- 传递给视图的不是 $formattedResponse,而是 $formattedResponse['item'],而不是遍历它。让我们称之为 $items.
$items = $formattedResponse['item']; // pass $items to the view.
- 在 ['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,但更容易寻找人类 ;)