2013-05-15 4 views
1

Строка:Двойной взрываются массив

user:hello,user2:world 

Желаемая Выход:

$string = array(
    1 => array(1 => "user", 2 => "hello"), 
    2 => array(1 => "user2", 2 => "world") 
); 

То, что я пытался (это не работает):

$string = explode(',',$string); 
$string = explode(':',$string); 

ошибка I get: explode() expects parameter 2 to be string
Как я могу получить от строки до желаемого результата? Благодаря!

+0

................. Не ожидал этот вопрос, используйте взрываются затем цикл Еогеасп затем снова взорвемся ... – HamZa

+0

петля над выходом с первого взрыва и взорвется во второй раз по каждому значению. –

+0

Когда вы взорваетесь в строке, вы получаете массив строк, а не строку –

ответ

5

петля над выходом с первого взрыва и взорваться во второй раз по каждому значению.

$string = "user:hello,user2:world"; 
$array = explode(',', $string); 

foreach($array as $k=>$v){ 
    $array[$k] = explode(':', $v); 
} 
+0

Отлично. Благодаря! Примут через 7 минут. – Mooseman

+0

только одно небольшое улучшение: 'foreach ($ array as & $ v) $ v = explode (':', $ v);' см. Http://codepad.viper-7.com/5ExRH1 – michi

+0

нет необходимости сделайте ссылку из $ v, когда он переназначает значение через ключ. в любом случае работает, если честно –

0

Вы можете использовать example of user from manual.

function multiexplode ($delimiters,$string) { 
    $ary = explode($delimiters[0],$string); 
    array_shift($delimiters); 
    if($delimiters != NULL) { 
     foreach($ary as $key => $val) { 
      $ary[$key] = multiexplode($delimiters, $val); 
     } 
    } 
    return $ary; 
} 

// Example of use 
$string = "1-2-3|4-5|6:7-8-9-0|1,2:3-4|5"; 
$delimiters = Array(",",":","|","-"); 

$res = multiexplode($delimiters,$string); 
echo '<pre>'; 
print_r($res); 
echo '</pre>'; 
3

Пожалуйста, попробуйте следующее:

$string = 'user:hello,user2:world'; 
$output = explode(',',$string); 
foreach ($output as &$e) { 
    $e = explode(':', $e); 
} 
print_r($output); 
+0

Не забудьте сделать 'unset ($ e);' after' foreach'. Это может вызвать новую проблему. – mpyw

1
<?php 

$string = "user:hello,user2:world"; 

$array = array_map(function ($input) { 
    return explode(':',$input); 
}, explode(',', $string)); 

print_r($array);