2013-12-10 4 views
-2

Моего входа это:Explode строки, используя целочисленное расположение

$str = ' 1. Admin, Administrator,3. Visor, Super,4. Team, Super User,5. lastname, employee' 

, как я могу быть следующий вывод, используя массив Взорвать?

array(
     [0] => Array ([0] => 1 [1] => Admin [2] => Administrator) 
     [1] => Array ([0] => 3 [1] => Visor [2] => Super) 
     [2] => Array ([0] => 4 [1] => Team [2] => Super User) 
     [3] => Array ([0] => 5 [1] => lastname [2] => employee) 
    ) 
+0

взрываться не то, что вы хотите. как ваш выход "1. Admin, Administrator, 3. козырек, супер, 4. Команда, Super User, 5. ФАМИЛИЯ, работник", чтобы начать с, должна быть – skrilled

+1

Используйте простой 'foreach' – sectus

+0

что будет? @skrilled – asdfme123

ответ

6
<?php 
$str = '1. Admin, Administrator,3. Visor, Super,4. Team, Super User,5. lastname, employee'; 
$str = str_replace('.', ',', $str); 
$arr = explode(',', $str); 
$arr = array_chunk ($arr, 3); 
var_export($arr); 
1

Вот еще один вариант ... Это не очень безопасный способ, чтобы получить данные, но до тех пор, пока вход ВСЕГДА ОТЛИЧНО в таком формате это будет работать. Основное различие заключается в том, что он обрезает пробелы.

Вы также можете использовать другой ответ и просто сделать str_replace (»», „“, прежде чем начать

$myString="1. Admin, Administrator,3. Visor, Super,4. Team, Super User,5. lastname, employee"; 
$myOutput=array(); 
$myFirstSplit = explode(",",$myString); 
foreach($myFirstSplit as $myKey=> $myVal){ 
    $myNextSplit=explode('.',$myVal); 
    if(count($myNextSplit) > 1){ 
     $myOutput[$myKey]=array(trim($myNextSplit[0]),trim($myNextSplit[1])); 
    }else{ 
     $myOutput[$myKey-1][]=trim($myNextSplit[0]); 
    } 
} 
var_dump($myOutput); 
1

Другим решением, которое отсекает выход и немного быстрее, чем хорошее) решение (srain в:

$str = '1. Admin, Administrator,3. Visor, Super,4. Team, Super User,5. lastname, employee'; 
$tok = strtok($str, ".,"); 
$output = array(); 
while ($tok !== false) { 
    $output[] = trim($tok); 
    $tok = strtok(".,"); 
} 
$output = array_chunk($output, 3); 

echo '<pre>'; 
print_r($output); 
Смежные вопросы