2011-02-07 3 views
1

У меня есть массив, который выглядит так, как показано ниже. Я хотел бы перебрать цикл и назначить 3 различным переменным соответствующие строки. так, например:Назначение массива php loop

Выходной:

$mike = 'foo - '; 
$john = 'bar foo foo - bar foo foo - bar foo bar - ' 
$bob = 'bar foo bar bar foo - bar foo - ' 

Что бы короткий (EST) способ сделать это? благодаря

Начальный массив

Array 
(
    [mike] => Array 
     (
      [0] => foo - 
     ) 
    [john] => Array 
     (
      [0] => bar foo foo - 
      [1] => bar foo foo - 
      [2] => bar foo bar - 
     ) 
    [bob] => Array 
     (
      [0] => bar foo bar - 
      [1] => bar foo - 
      [2] => bar foo - 
     ) 
) 
+0

Я не понимаю. – powtac

+0

вопрос: в чем вопрос .. !! ?? – Sigtran

+0

в основном создают 3 vars ($ mike, $ john, $ bob) и присваивают соответствующие элементы каждому var. Я не хочу делать '$ john = $ array ['john'] [0]. $ Array ['john'] [1]. $ Array ['john'] [2] ...' для того, чтобы все элементы добавлены в '$ john' в этом случае – Mike

ответ

5

Это случай для variables variables:

foreach ($array as $key => $values) { 
    $$key = implode($values); 
} 

Однако, вы можете на самом деле не нужны. Я хотел бы использовать массив вместо:

$result = array(); 
foreach ($array as $key => $values) { 
    $result[$key] = implode($values); 
} 

Так вы получите:

Array 
(
    [mike] => foo - 
    [john] => bar foo foo - bar foo foo - bar foo bar - 
    [bob] => bar foo bar - bar foo - bar foo - 
) 
+0

Спасибо, вот что я искал! – Mike

+0

+1 для рекомендации сохранения массива –

1

использование extract() и implode()

$a = array('mike' => array('foo -'), 
      'john' => array('bar foo foo - ', 
          'bar foo foo - ', 
          'bar foo bar - ' 
          ), 
      'bob' => array('bar foo bar - ', 
          'bar foo - ', 
          'bar foo - ' 
          ) 
     ); 

foreach($a as $k => $v) { 
    $a[$k] = implode(' ',$v); 
} 
extract($a); 

var_dump($mike); 
var_dump($john); 
var_dump($bob); 
Смежные вопросы