PHP变量数组+循环

Dav*_*ave 1 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>
Run Code Online (Sandbox Code Playgroud)

这很好,它显示了一个项目的数据.我需要做的是显示更多项目的数据.到目前为止,我只是重复了块并更改了$ idMovie变量 - 但这当然不是这样做的方法.

我想我需要这样做:

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

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

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

谢谢戴夫

rai*_*7ow 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; ?>
Run Code Online (Sandbox Code Playgroud)

在这里,我使用了所谓的"替代语法",当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);
?>
Run Code Online (Sandbox Code Playgroud)

在这里,我使用array_map函数创建一个数组$pelHTMLs,其中每个元素都是电影数据的HTML表示,与从$idMovies数组中获取的id相关.然后所有这些部分只是"加入"一个带有"内爆"功能的字符串 - 然后回声.

这种形式经常在PHP 5.3+环境中使用(当你可以提供匿名函数array_map和类似的列表理解函数时).但它实际上也可以在PHP 5.2中完成 - 你只需要将这部分提取到一个单独的函数(或类方法)中,然后将它的名称(或带有两个参数的数组 - 类名和方法名)作为'callback'参数.