PHP变量数组+循环

时间:2012-11-24 21:37:59

标签: php arrays api loops

首先我应该说我不是一个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变量 - 但这当然不是这样做的。

我想我需要这样做:

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

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

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

    由于 戴夫

5 个答案:

答案 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 } ?>

类似这样的事情