首先我应该说我不是一个PHP人,所以如果有人可以提供帮助,我会尽力理解任何建议。
我有以下代码访问API并通过PHP包装器输出一些数据:
$idMovie=11;
$pelinfo = $tmdb_V3->movieDetail($idMovie);
<h1><?php echo $pelinfo[original_title]; ?></h1>
<h2><?php echo $pelinfo[release_date]; ?></h2>
<img src="<?php echo $pelinfo[poster_path]; ?>">
<p><?php echo $pelinfo[overview]; ?></p>
这很好,它显示了一个项目的数据。我需要做的是显示更多项目的数据。到目前为止,我刚刚重复了块并更改了$ idMovie变量 - 但这当然不是这样做的。
我想我需要这样做:
设置一个数组来保存每个变量,所以$ idMovie [12,34,56,78]
创建循环以遍历每个变量,并使用输出数据 我上面的代码块。
如果有人能指出我正确的方向,那将是最有帮助的。
由于 戴夫
答案 0 :(得分:6)
PHP中有一个非常有用的构造 - foreach:
<?php foreach($idMovies as $idMovie):
$pelinfo = $tmdb_V3->movieDetail($idMovie); ?>
<h1><?php echo $pelinfo['original_title']; ?></h1>
<h2><?php echo $pelinfo['release_date']; ?></h2>
<img src="<?php echo $pelinfo['poster_path']; ?>">
<p><?php echo $pelinfo['overview']; ?></p>
<?php endforeach; ?>
这里我使用了所谓的“替代语法”,当HTML片段中包含PHP片段时非常有用。
然而,迭代这个数组的方法不止一种。例如:
<?php
$idMovies = array(11, 22, 33, 42);
$pelHTMLs = array_map(function($id) use ($tmdv_V3) {
$pelInfo = $tmdv_V3->movieDetail($id);
// perhaps you should check the result here, no?
return <<<HTML
<h1>$pelInfo[original_title]</h1>
<h2>$pelInfo[release_date]</h2>
<img src="$pelInfo[poster_path]" />
<p>$pelInfo[overview]</p>
HTML;
}, $idMovies);
echo implode("\n", $pelHTMLs);
?>
这里我使用array_map函数创建了一个数组$pelHTMLs
,其中每个元素都是电影数据的HTML表示,与从$idMovies
数组中获取的id相关。然后所有这些部分只是“加入”一个带有“内爆”功能的字符串 - 然后回声。
这种形式经常在PHP 5.3+环境中使用(当你可以在array_map
和类似的列表理解函数中提供匿名函数时)。但它实际上也可以在PHP 5.2中完成 - 你只需要将这部分提取到一个单独的函数(或类方法)中,然后将它的名称(或带有两个参数的数组 - 类名和方法名)作为'callback'参数
答案 1 :(得分:1)
尝试使用
while($data = $pelinfo){<h1><?php echo $pelinfo[original_title]; ?></h1>
<h2><?php echo $pelinfo[release_date]; ?></h2>
<img src="<?php echo $pelinfo[poster_path]; ?>">
<p><?php echo $pelinfo[overview]; ?></p>}
这应该经历所有这一切。 从这里你应该能够解决你的第一个问题。
答案 2 :(得分:1)
它就像你的伪代码一样简单。这是一个实现:
<?php
$ids = array('12','34','56','78') //array of movie ids
$foreach($ids as $id) : //I'm a huge fan of foreach vs for
$pelinfo = $tmdb_V3->movieDetail($id);
?>
<h1><?php echo $pelinfo[original_title]; ?></h1>
<h2><?php echo $pelinfo[release_date]; ?></h2>
<img src="<?php echo $pelinfo[poster_path]; ?>">
<p><?php echo $pelinfo[overview]; ?></p>
<?php endforeach; ?>
答案 3 :(得分:1)
$idMovie = array(12,34,56,78);
foreach($idMovie as $id){
$pelinfo = $tmdb_V3->movieDetail($id);
echo "<h1> $pelinfo[original_title] </h1>
<h2> $pelinfo[release_date] </h2>
<img src='$pelinfo[poster_path]'>
<p>$pelinfo[overview]</p>";
}
答案 4 :(得分:0)
$idMovieArr=array(11,22,35,...);
foreach ($idMovieArr as $key) {
$idMovie=$idMovieArr[$key];
$pelinfo = $tmdb_V3->movieDetail($idMovie);
<h1><?php echo $pelinfo[original_title]; ?></h1>
<h2><?php echo $pelinfo[release_date]; ?></h2>
<img src="<?php echo $pelinfo[poster_path]; ?>">
<p><?php echo $pelinfo[overview]; ?></p>
<?php } ?>
类似这样的事情