1

首先我应该说我不是 PHP 人,所以如果有人可以提供帮助,我会尽我所能理解任何建议。

我有以下代码通过 PHP 包装器访问 API 并输出一些数据:

$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 变量-但这当然不是这样做的方法。

我想我需要这样做:

  1. 设置一个数组来保存每个变量,所以 $idMovie[12,34,56,78]

  2. 创建一个循环来遍历每个变量,并使用我上面的代码块输出数据。

如果有人能指出我正确的方向,那将是最有帮助的。

谢谢戴夫

4

5 回答 5

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; ?>

在这里,我使用了所谓的“替代语法”,当 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 中完成 - 您只需将这部分提取到单独的函数(或类方法)中,然后将其名称(或具有两个参数的数组 - 类名和方法名)作为“回调”参数.

于 2012-11-24T21:42:59.720 回答
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>}

这应该经历所有这些。从这里你应该能够解决你的第一个问题。

于 2012-11-24T21:42:23.283 回答
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; ?>
于 2012-11-24T21:44:59.763 回答
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>";

}
于 2012-11-24T21:46:47.337 回答
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 } ?>

像这样的东西

于 2012-11-24T21:43:03.853 回答