2013-09-06 4 views
0

Как разбить строку на php и сохранить в трех разных массивах? Я совершенно новой для PHP так, пожалуйста, дайте мне подробно ответ, если вы можете ~Использование PHP для разбиения строки

Input будет строка, мы не знаем, как долго это:

ubuntu1204gui Client myurl/token=something1 windows7 Gateway myurl/token=token=something2 ubuntu1204gui Server myurl/token=token=something3 ... 

и вне положенный должны быть три матрицы:

array1[0]= ubuntu1204gui 
array1[1]= windows7 
array1[2]= ubuntu1204gui 
array1[3]= ... 
... 

array2[0]= Client 
array2[1]= Gateway 
array2[2]= Server 
array2[3]= ... 
... 

array3[0]=myurl/token=token=something1 
array3[1]=myurl/token=token=something2 
array3[2]=myurl/token=token=something3 
array3[3]=... 
... 

Большое спасибо за помощь!

+2

Пожалуйста, покажите нам, что вы пробовали. – Daedalus

ответ

0

Поскольку ваша строка имеет 3 различных типов данных, разделенных пробелами, вам нужно немного больше, чем просто взорваться() к сожалению.

Это фрагмент.

// Declare our string 
$string = "ubuntu1204gui Client myurl/token=something1 windows7 Gateway myurl/token=token=something2 ubuntu1204gui Server myurl/token=token=something3"; 

// First Split the spring up into individual items (using the spaces as delimiter) 
// http://php.net/manual/en/function.explode.php 
$items = explode(' ',$string); 

// setup our target arrays 
$array1 = $array2 = $array3 = array(); 

// Reindex our array to start from 1 (so we can use modulus effectively) 
array_unshift($items, "temp"); 
unset($items[0]); 

// Then we loop items & put in right array using the help of our friend modulus! 
foreach($items as $key=>$item) 
{ 
    if($key%3==0) 
    $array3[] = $item; 
    else 
    if($key%3==2) 
    $array2[] = $item; 
    else 
    $array1[] = $item; 
} 

echo'<pre>'; 
print_r($array1); 
print_r($array2); 
print_r($array3); 

Tada !!

Array 
(
    [0] => ubuntu1204gui 
    [1] => Gateway 
    [2] => ubuntu1204gui 
) 
Array 
(
    [0] => Client 
    [1] => windows7 
    [2] => Server 
) 
Array 
(
    [0] => myurl/token=something1 
    [1] => myurl/token=token=something2 
    [2] => myurl/token=token=something3 
) 
+0

сделал быструю коррекцию – pablorenato

+0

Мне любопытно, почему это было отклонено, так как оно делает именно то, что хочет OP. Это может быть грязное решение, но это решение. – Daedalus

+0

Не уверен, но ответ webarto + rob более компактен/прост, чем у меня, поэтому я проголосую! – pablorenato

1
$str = 'ubuntu1204gui Client myurl/token=something1 windows7 Gateway myurl/token=token=something2 ubuntu1204gui Server myurl/token=token=something3'; 

$arr = []; 
foreach(explode(' ', $str) as $key => $value) 
{ 
    $arr[(($key + 1) % 3)][] = $value; 
} 

var_dump($arr); 

Выход

array (size=3) 
    1 => 
    array (size=3) 
     0 => string 'ubuntu1204gui' (length=13) 
     1 => string 'windows7' (length=8) 
     2 => string 'ubuntu1204gui' (length=13) 
    2 => 
    array (size=3) 
     0 => string 'Client' (length=6) 
     1 => string 'Gateway' (length=7) 
     2 => string 'Server' (length=6) 
    0 => 
    array (size=3) 
     0 => string 'myurl/token=something1' (length=22) 
     1 => string 'myurl/token=token=something2' (length=28) 
     2 => string 'myurl/token=token=something3' (length=28) 
Смежные вопросы