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; ?>
在这里,我使用了所谓的“替代语法”,当 PHP 片段包含在 HTML 模板中时很有用。
然而,有不止一种方法可以遍历这个数组。例如:
<?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 中完成 - 您只需将这部分提取到单独的函数(或类方法)中,然后将其名称(或具有两个参数的数组 - 类名和方法名)作为“回调”参数.