2013-06-18 2 views
1

Извините, что беспокою вас об этом. Я запускаю mkdir для репликации каталогов, которые я сохранил в БД.PHP Loop mkdir failing

Если отобразить данные на странице PHP каталоги выглядеть следующим образом:

element1/Content/EPAC/PROD 
element1/Content/EPAC/TEST 
element1/Content/EPAC_SG/PROD 
element1/Content/EU/PROD 
element1/Content/EU/TEST 

выше является подмножеством данных. Что происходит с вышеуказанным подмножеством, когда я его просматриваю, он создает элемент каталога1/Content/EPAC/PROD, но игнорирует элемент1/Content/EPAC/TEST и element1/Content/EPAC_SG/PROD, затем он создает элемент1/Content/EU/PROD, но игнорирует element1/Content/EU/TEST и т. Д. И продолжается через такой цикл. Код я использую:

foreach($NSRarray as $value) 
{ 
    mkdir("ftpfolders/$value", 0700, true); 
} 

* переменная $ значение выше, является 'element1/Content/EPAC/PROD' записи взяты из БД.

Любые идеи? Спасибо заранее, Ste

+0

Что вопрос и Whats ошибки? – DevZer0

+0

Вы когда-нибудь решали проблему? :) Если да, то примите соответствующий ответ. – cb0

ответ

1

Я бы разделил это на генераторы по одному за раз.

Преобразуйте свой массив в sth. как

$dics=array(
'element1' => array(
    'Content' => array(
     'EPAC' => array('PROD', 'TEST'), 
     'EPAC_SG' => array('PROD') 
     'EU' => array('PROD', 'TEST') 
    ) 
    ) 
); 

Тогда петля над ним, начиная с array_keys ($ Dics) и создать каталог, если не существует. Продолжите с array_keys ($ dics ['element1']), а затем повторите его, пока не достигнете внутренних дочерних элементов.

Надеюсь, это поможет.

+0

Привет, Большое вам спасибо за ответ. Мне просто удалось это исправить. Выключает mkdir после того, как определенный уровень добавляет пробел. Я сделал замену строки, чтобы удалить пространство, и он создал мои каталоги, как я надеюсь. Большое спасибо за интеллектуальный ответ, хотя, я уверен, что буду использовать вашу идею, когда снова застрял. –

1

использовать этот код, это будет дает вам правильную структуру папок в соответствии с вашими требованиями

<?php 
$NSRarray = array('element1/Content/EPAC/PROD', 'element1/Content/EPAC/TEST', 'element1/Content/EPAC_SG/PROD','element1/Content/EU/PROD','element1/Content/EU/TEST'); 

foreach($NSRarray as $value) 
{ 
    $getFolders = explode('/' , $value); 
    $mainFoldername = "ftpfolders"; 
    $countfolder = 0; 
    $countfolder = count($getFolders); 
    $tempName = ""; 
    $i = 0; 
    for($i == 0; $i < $countfolder; $i++){ 
     $tempName .= $getFolders[$i]; 
     if (!file_exists("$mainFoldername/$tempName")) { 
      mkdir("$mainFoldername/$tempName", 0700, true); 
     } 
     $tempName .= '/'; 
    } 
} 

?> 
+0

Привет, большое спасибо за ответ. Мне просто удалось исправить это уже в соответствии с вышеприведенным комментарием, но я добавил ваши файлы file_exists к коду, что, безусловно, помогло его убрать. Большое спасибо за ответ, надеюсь, что смогу помочь вам когда-нибудь –