簡體   English   中英

PHP foreach循環自動將變量添加在一起

[英]PHP foreach Loop Adds Variables Together Automatically

我有一個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,它會根據POST數據(即HTML文本區域)創建一個數組,並以每個新行作為一個新值來創建一個數組,它會輸出類似的內容。

輸出:

/文件夾名稱/ 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;
}

我相信問題是因為您的foreach循環遍歷一個變量並聲明一個具有相同名稱的變量:

foreach($filenamewithext as $filenamewithext)

將其更改為類似

foreach($filenamewithext as $fext) {
}

編輯,什么是$filename1$folder 您一直追加到$folder 在循環的頂部重置它。

嘗試添加

$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;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM