2016-12-14 20 views
0

私は複数のPHPタスクを持つプロジェクトに取り組んでいます。そのうちの1つは、いくつかのMySQLクエリとPHP構造を組み合わせて結果をテキストファイルに出力します。私は接続、txtファイルの作成、およびクエリが完了し、正常に機能している。私の問題は、データ構造のPHPループと、結果の構造を反復/ループして適切に出力するネストループです。データ構造のループが正しい:PHP - クエリとデータ構造をループする

$userQuery = "SELECT title, last_name, first_name 
      FROM film_actor 
      LEFT JOIN film f 
      ON film_actor.film_id = f.film_id 
      LEFT JOIN actor a 
      ON a.actor_id = film_actor.actor_id 
      ORDER BY title"; 

    $filmActors =fopen("FilmActors.txt","w"); 

    while ($row = mysqli_fetch_assoc($result)) 
     { 
     $title = $row['title']; 
     $last = $row['last_name']; 
     $first = $row['first_name']; 

     $filmActor["$title"][] = "$last".","."$first"; 
     } 

ネストされたループは、キー値に対して正しく開始されますが、私はループと印刷結果に使用したすべてのステップが唯一の単語「配列」のではなく要素を出力します。私のSQLクエリは、映画の名前と映画の俳優をリストアップしたデータベースのため、これらの映画には5つ以上の俳優が掲載されています。私の目標は、以下のようにテキストファイルにそれらを印刷することです:Film Name:アクターの数:Actor 1 last name、actor 1 first name、など

ここで私は、「ネストされたforループを始め成功しましです:

while ($k_v = each($filmActor)) { 
     foreach($filmActor as $k_v => $value) { 
     //$k_v => $value; 
     fputs($filmActors, "$title:$value\n"); 
    } 

答えて

0

最も簡単な解決策は、この1のようになります!

... 

$filmActors = fopen("FilmActors.txt","w"); 
$text = ''; 

foreach ($filmActor as $film_title => $actors) { 
    $text .= $film_title . ':' . count($actors) . ':' . implode(';', $actors) . PHP_EOL; 
} 

fwrite($filmActors, $text); 
fclose($filmActors); 
+0

はそれを得ているように見えること、ありがとう、私は私が最初に 'foreach'ループと関係があることを混乱させていました。ありがとう –

関連する問題