2016-06-15 5 views
-2

Я пытаюсь создать код без IF:PHP Переменные переменные и массив ключевого veriables

if ($lvl == 0) { 
    $OutPutArray[0]['follow'][] = $infoArr; 
} elseif ($lvl == 1) { 
    $OutPutArray[0]['follow'][0]['follow'][] = $infoArr; 
} elseif ($lvl == 2) { 
    $OutPutArray[0]['follow'][0]['follow'][0]['follow'][] = $infoArr; 
} 

И я хочу, чтобы быть неограниченными. Так что мне нужно что-то вроде:

$prefix="[some_key]...[some_key]"; 
${$prefix}[] = $Array; 

У меня есть некоторые данные, как это:

[0] -id [7] -collectorId

Array 
    (
     [0] => Array 
      (
       [0] => 00230000 
       [1] => 4501 
       [2] => 0002 
       [3] => 0003 
       [4] => 0004 
       [5] => 0005 
       [6] => 0006 
       [7] => 00000000 
      ) 

     [1] => Array 
      (
       [0] => 000x000x 
       [1] => 000x 
       [2] => 000x 
       [3] => 000x 
       [4] => 000x 
       [5] => 000x 
       [6] => 0000 
       [7] => 00230000 
      ) 

    ) 

И тогда у меня есть функция делает «дерево Array»так:

Array 
(
    [0] => Array 
     (
      [data] => Array 
       (
        [0] => 00230000 
        [1] => 4501 
        [2] => 0002 
        [3] => 0003 
        [4] => 0004 
        [5] => 0005 
        [6] => 0006 
        [7] => 00000000 
       ) 

      [follow] => Array 
       (

       [0] => Array 
        (
         [data] => Array 
         (
          [0] => 000x000x 
          [1] => 000x 
          [2] => 000x 
          [3] => 000x 
          [4] => 000x 
          [5] => 000x 
          [6] => 0000 
          [7] => 00230000 
         ) 
         [follow] => Array 
         (
         ) 
        ) 
      ) 
     ) 

) 

UPDATE 2

Так что это была неправильная структура для моего массива .. Бесконечная вложенность здесь не нужна. Но, возможно, в этом случае он понадобится. Поэтому я решил не снимать мой глупый вопрос.

PS>

что-то ужасное случилось в моем сознании на 15/06/2016))))

+2

Не получается точно вы можете объяснить? –

+0

Не могли бы вы рассказать? –

ответ

1

Вы не можете использовать различные переменные для описания массива размерности (ну, на самом деле вы можете, если вы eval the string, но это ужасно и опасно).

Если бы это был я, и я не мог избежать проблемы (это выглядит несколько подозрительно), то я бы использовал рекурсивную функцию.

function setOuput(&$output, $lvl, $infoArr) 
{ 
    if (!is_array($output)) { 
     $output=array('follow'=>array(0=>false)); 
    } else if (!is_array($output[0]['follow']) { 
     $output[0]['follow']=array(0=>false); 
    } 

    if (!$lvl) { 
     $output[0]['follow'][0]=$infoArr; 
    } else { 
     setOuput($output[0]['follow'][0], $lvl-1, $infoArr); 
    } 
} 
+0

Хорошо) У меня есть рекурсивный вызов функции в рекурсивной функции)) Потому что мой код уже в рекурсивной функции)) Мне очень грустно об этом .. –

+0

Итак, в этом случае объясните, зачем вы этого хотите, и какова первоначальная цель (и рассуждения позади него)? Возможно, мы сможем помочь вам, показывая альтернативы тому, что вы _actually_ хотите, вместо того, чтобы просто фиксировать плохой код (который тогда остается плохим) – Tularis

+0

Я получаю некоторые данные, просто массив [0] {[id], [parms] .... [collectorId]}. Я хочу создать массив, который будет каким-то деревом ... я могу добавить свой вопрос. –

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