2017-01-18 2 views
0

я получаю ответ от вызова API, который выглядит следующимСоздание каталогов на основе массива значений

Array 
(
    [_id] => aasdasdasdasdasd 
    [created] => 2017-01-16T14:11:54.616Z 
    [options] => Array 
     (
      [title] => 1 
      [data] => Array 
       (
        [0] => Array 
         (
          [labelName] => Date 
          [labelValues] => Array 
           (
            [0] => March 2016 
           ) 

         ) 

        [1] => Array 
         (
          [labelName] => Title 
          [labelValues] => Array 
           (
            [0] => Food 
           ) 

         ) 

        [2] => Array 
         (
          [labelName] => Product 
          [labelValues] => Array 
           (
            [0] => Rice 
           ) 

         ) 

       ) 

     ) 
) 

я обрабатывать ответ, выполнив следующие действия

$results = array(); 
foreach ($output['options']['data'] as $data) { 
    if (isset($data['labelValues'][0])) { 
     $results[$data['labelName']] = $data['labelValues'][0]; 
    } 
} 

Это оставляет меня с чем-то по линиям этого

Array 
(
    [Date] => March 2016 
    [Title] => Food 
    [Product] => Rice 
) 

Ввод в массив не был моим намерением, в основном это было сделано для помогите мне лучше понять цикл, необходимый для обработки исходных данных.

Моя основная цель - создать каталоги из этих значений. Основным каталогом будет дата, внутри которой должно быть Название, и внутри этого должен быть Продукт. Итак, для вышесказанного структура каталогов должна быть чем-то вроде 2016> Food> Rice.

Для того, чтобы достичь этого, я пришел со следующим

foreach ($output['options']['data'] as $data) { 
    if (isset($data['labelValues'][0])) { 
     if($data['labelName'] == 'Date') { 
      if (preg_match('/\b\d{4}\b/', $data['labelValues'][0], $matches)) { 
       $results[$data['labelName']] = $matches[0]; 
       if (!file_exists($matches[0])) { 
        mkdir($matches[0], 0777, true); 
       } 
      } 
     } 
    } 
} 

Вышеприведенные хорошо работает и создает папку даты для меня. Там, где я боюсь, я теперь создаю папку Title в папке Date, а затем Продукт в заголовке.

Как бы я мог добиться этого?

Большое спасибо

ответ

1

Мне нравится ваш созданный массив:

$array = array ( [Date] => March 2016 [Title] => Food [Product] => Rice )

Просто обрушится путь:

mkdir(implode('/', $array), 0777, true); 

Это позволит создать все каталоги, March 2016/Food/Rice

+0

идеально , Есть ли способ сделать регулярное выражение, чтобы сделать его 2016, чтобы не было месяца? –

+0

Я действительно вижу еще одну проблему, которая означает, что мне могут понадобиться петли? Мне нужно создать образ в последнем созданном каталоге. –

Смежные вопросы