1

誰かがこれで私を助けてくれますか?

いくつかのファイルを含むフォルダーがあります (拡張子なし)

/モジュール/メール/テンプレート

これらのファイルで:

  • テスト
  • テスト2

最初にループしてファイル名 (test と test2) を読み取り、それらをドロップダウン アイテムとして HTML フォームに出力します。これは機能します (残りのフォーム html タグは以下のコードの上と下にあり、ここでは省略されています)。

しかし、各ファイルのコンテンツを読み取り、そのコンテンツを var $content に割り当てて、後で使用できる配列に配置したいとも考えています。

これは、運がなければこれを達成しようとする方法です:

    foreach (glob("module/mail/templates/*") as $templateName)
        {
            $i++;
            $content = file_get_contents($templateName, r); // This is not working
            echo "<p>" . $content . "</p>"; // this is not working
            $tpl = str_replace('module/mail/templates/', '', $templatName);
            $tplarray = array($tpl => $content); // not working
            echo "<option id=\"".$i."\">". $tpl . "</option>";
            print_r($tplarray);//not working
        }
4

2 に答える 2

1

このコードは私のために働いた:

<?php
$tplarray = array();
$i = 0;
echo '<select>';
foreach(glob('module/mail/templates/*') as $templateName) {
    $content = file_get_contents($templateName); 
    if ($content !== false) {
        $tpl = str_replace('module/mail/templates/', '', $templateName);
        $tplarray[$tpl] = $content; 
        echo "<option id=\"$i\">$tpl</option>" . PHP_EOL;
    } else {
        trigger_error("Cannot read $templateName");
    } 
    $i++;
}
echo '</select>';
print_r($tplarray);
?>
于 2012-08-05T01:30:01.710 に答える
1

ループの外で配列を初期化します。次に、ループ内で値を割り当てます。ループの外に出るまで、配列を印刷しようとしないでください。

へのr呼び出しのfile_get_contentsが間違っています。それを取り出す。の 2 番目の引数file_get_contentsはオプションであり、使用する場合はブール値にする必要があります。

ファイルを読み取ろうとしてエラーが発生した場合に返されるものをfile_get_contents()確認してください。FALSE

$templatNameではなく参照している箇所にタイプミスがあります$templateName

$tplarray = array();
foreach (glob("module/mail/templates/*") as $templateName) {
        $i++;
        $content = file_get_contents($templateName); 
        if ($content !== FALSE) {
            echo "<p>" . $content . "</p>";
        } else {
            trigger_error("file_get_contents() failed for file $templateName");
        } 
        $tpl = str_replace('module/mail/templates/', '', $templateName);
        $tplarray[$tpl] = $content; 
        echo "<option id=\"".$i."\">". $tpl . "</option>";
}
print_r($tplarray);
于 2012-08-05T01:04:05.403 に答える