2013-12-04 3 views
1

У меня есть небольшой массив, который я надеялся разделить на многомерный массив. Я схожу с некоторыми петлями foreach, подсчитанными петлями и рекурсией без везения. Мне явно нужно учиться больше.PHP построить многомерный массив от

Могу ли я взять массив так:

array(
(int) 0 => 'red', 
(int) 1 => 'white' 
(int) 2 => 'blue' 
) 

И сделать это многомерная, как это:

array(
'AND' => array(
    'LIKE ' => 'red', 
    'AND' => array(
     'LIKE ' => 'white', 
     'AND' => array(
      'LIKE ' => 'blue' 
     ) 
    ) 
) 
) 

Любая помощь приветствуется.

ответ

1

Некоторые магии здесь с references без рекурсии.

$array = array('red', 'white', 'blue'); 

$new_array = array(); 
$temp_array = &$new_array; 
foreach ($array as $item) 
    { 
    $temp_array = &$temp_array['and']; 
    // $temp_array value now equals to null, 
    // and it's refers to parent array item with key 'and' 
    $temp_array['like'] = $item; 
    } 
unset($temp_array); 
print_r($new_array); 

Demo

+0

Спасибо, это тоже работает. – user2856332

+0

@ user2856332, почему не рекурсия? – sectus

0

Вы можете использовать

<pre><?php print_r($array); ?></pre> 
1

Вы можете сделать это с помощью рекурсии:

function multify($arr) 
{ 
    if(count($arr)<=1) 
    { 
     return array('LIKE'=>array_pop($arr)); 
    } 
    return array('LIKE'=>array_pop($arr), 'AND'=>multify($arr)); 
} 

$arr = array('red', 'white', 'blue'); 
print_r(array('AND'=>multify($arr))); 
+0

Работал как шарм, спасибо за помощь – user2856332

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