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 基于 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;
}
4

2 回答 2

0

我相信问题是因为你的 foreach 正在循环一个变量并声明一个同名的变量:

foreach($filenamewithext as $filenamewithext)

将其更改为类似

foreach($filenamewithext as $fext) {
}

编辑,什么是$filename1$folder?你继续追加到$folder. 在循环顶部重置它。

于 2013-03-08T07:15:55.940 回答
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 回答