[英]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.