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>

これは正常に機能し、1 つのアイテムのデータが表示されます。私がする必要があるのは、さらに多くのアイテムのデータを表示することです。これまでのところ、ブロックを繰り返して $idMovie 変数を変更しましたが、これはもちろん、それを行う方法ではありません。

私はこれを行う必要があると思います:

  1. 各変数を保持する配列を設定するため、$idMovie[12,34,56,78]

  2. 各変数を通過するループを作成し、上記のコード ブロックを使用してデータを出力します。

誰かが私を正しい方向に向けることができれば、それは最も役に立ちます.

ありがとうデイブ

4

5 に答える 5

6

PHP には非常に便利な構文が 1 つあります - 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関数を使用して array を作成しました$pelHTMLs。各要素は、$idMovies配列から取得した ID に関連するムービー データの HTML 表現です。次に、これらすべての部分は、'implode' 関数を使用して 1 つの文字列に '結合' され、エコー出力されます。

この形式は、PHP 5.3 以降の環境でよく使用されます (匿名関数をarray_mapおよび類似のリスト内包関数に提供できる場合)。しかし、実際には PHP 5.2 でも実行できます。この部分を別の関数 (またはクラス メソッド) に抽出し、その名前 (または 2 つのパラメーター (クラス名とメソッド名) を持つ配列) を 'callback' 引数として指定するだけです。 .

于 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 に答える