0

関連性のない何らかの形でデータを追加または保存しているように見えるPHPループがあり、配列の最後の値から解釈して、少し混乱してエコーアウトします。これが私のコードです:

$filenamewithext = explode("\n", $_POST['filename']);
foreach($filenamewithext as $line)
{   
    $filename = mysql_real_escape_string($line);
    $fileletter = substr($filename, 0, 1);
        if (ctype_alpha($fileletter)) {
            $folder = $folder.$fileletter."/";
        } else {
            $folder = $folder. "0-9" . "/";
        }   
    echo $folder;

}

$filenamewithtext = test1、test2、および test3 が、HTML テキスト エリアである POST データに基づいており、新しい各行が新しい値である配列が作成されると、次のように出力されます。

出力:

/フォルダ名/t//フォルダ名/t/t/フォルダ名/t/t/t/

私が必要とするのは、最初の文字が毎回繰り返されるのではなく、毎回 1 の「t」を持つことです。私はかなり長い間これを解決しようとしてきましたが、助けていただければ幸いです。ありがとう。

アップデート:

$folder 変数を開始するために使用されるコード。

if (array_key_exists('submit', $_POST)) {
$cat = $_POST['selectCat'];
switch ($cat){
    case "Adult" : 
        $tablename = "voxadultfilestable" ;
        $folder = "/imagesxxx/" ;
        break;
    case "clips" : 
        $tablename = "voxfilestable";
        $folder = "/images/" ;
        break;
    case "concerts" :
        $tablename = "voxconcertsfilestable";
        $folder = "/imagesconcerts/" ;          
        break;
    case "mixes" : 
        $tablename = "voxmixesfilestable";
        $folder = "/imagesmixes/"   ;       
        break;
    case "movies" : 
        $tablename = "voxmoviesfilestable";
        $folder = "/imagesmovies/"  ;
        break;
    case "mp3" : 
        $tablename = "voxmp3filestable";
        $folder = "/imagesmp3/" ;
        break;
}
4

2 に答える 2

0

追加してみてください

$folder = '';

内部 foreach ループが開始されます。そのように見えます

$folder = $folder.$fileletter."/"; 古い $folder を追加して $folder に戻しています

それを試してみてください

$filenamewithext = explode("\n", $_POST['filename']);
foreach($filenamewithext as $line)
{   
    $folder = ''; // empty $folder at beginning of loop
    $filename = mysql_real_escape_string($line);
    $fileletter = substr($filename, 0, 1);
        if (ctype_alpha($fileletter)) {
            $folder = $folder.$fileletter."/";
        } else {
            $folder = $folder. "0-9" . "/";
        }   
    echo $folder;

}
于 2013-03-08T08:05:22.850 に答える
0

問題は、 foreach が変数をループし、同じ名前の変数を宣言しているためだと思います。

foreach($filenamewithext as $filenamewithext)

それを次のように変更します

foreach($filenamewithext as $fext) {
}

編集、とは何$filename1ですか$folder?に追加し続け$folderます。ループの先頭でリセットします。

于 2013-03-08T07:15:55.940 に答える