2013-03-08 2 views
0

У меня есть цикл PHP, который, кажется, добавляет или сохраняет данные так или иначе, что не имеет значения, и из последнего значения массива, которое он интерпретирует, а затем выделяет как беспорядок. Вот мой код:PHP foreach Loop Автоматически добавляет переменные

$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 Text Area и массив создается с каждым новым строка является новым значением.

Выход:

/имя_папки/т // имя_папки/т/т/имя_папки/т/т/т/

Что мне нужно это просто иметь 1 " t "каждый раз вместо того, чтобы первый символ повторялся каждый раз. Я уже давно пытаюсь это проработать, и любая помощь будет оценена по достоинству. Благодарю.

UPDATE:

Код используется для инициализации переменной папки $.

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; 
} 
+0

Желаемая выход? –

+0

Что такое '$ line' в' $ filename1 = mysql_real_escape_string ($ line); ' – Kabir

+0

Извините $ строка не является правильным кодом, она должна быть $ filenamewithext. Я отредактировал исходный вопрос. – jack2230

ответ

0

пытаются добавить

$folder = ''; 

внутри начинается цикл по каждому элементу. Похоже, что

$ folder = $ folder. $ Fileletter. "/"; добавляет старую $ папку и вернуться к папке $

Попробуй

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

} 
+0

Спасибо, это был не совсем правильный ответ, но ты мне очень помог. Оказывается, мне нужно было установить $ folder = $ category, которая была статической строкой, которую я создал каждый раз, когда цикл был выполнен.Еще раз спасибо, и я рад, что наконец решил. – jack2230

0

Я считаю, что проблема в том, что ваш Еогеасп цикл по переменной и объявить переменную с тем же именем:

foreach($filenamewithext as $filenamewithext) 

изменить, что-то вроде

foreach($filenamewithext as $fext) { 
} 

Edit, что такое $filename1 и $folder? Вы продолжаете добавлять к $folder. Сбросьте его в верхней части цикла.

+0

Я обновил код, и проблема все еще сохраняется. Спасибо за совет, хотя. – jack2230

+0

Какой код вы используете для инициализации $ folder? –

+0

Я добавил это к основному сообщению. Он в основном определяет его на основе другой части данных, отправленных в файл через POST. – jack2230