2016-06-29 15 views
0

Explodieren TextArea- Wert wie folgt:explodier TextArea- Werte in mehrere Array

explode("\n", $input); 

würde in einem Array führen.

a1 
a2 
a3 

b1 
b2 
b3 

c1 
c2 
c3 

Aber ich möchte mehrere Array erhalten, die wie folgt ergeben würde:

Derzeit bin ich $ input in TextArea- wie diese Speicherung

$test[0][0] = 'a1'; 
$test[0][1] = 'a2'; 
$test[0][2] = 'a3'; 

$test[1][0] = 'b1'; 
$test[1][1] = 'b2'; 
$test[1][2] = 'b3'; 

$test[2][0] = 'c1'; 
$test[2][1] = 'c2'; 
$test[2][2] = 'c3'; 

Jede Idee, wie kann ich umsetzen ?

+0

Was tut sieht der '$ input' aus? In welchem ​​Format ist es? –

+0

Was ist der Eingang? Basierend auf welcher Regel erwarten Sie, dieses Ergebnis zu konstruieren? – deceze

+0

In welchem ​​Format? ist es zum Beispiel 'a1, a2, a3 \ nb1, b2, b3 \ nc1, c2, c3'? –

Antwort

1

von zwei Zeilenumbrüche Explode Ihre Gruppen zu trennen, explodieren jede Gruppe durch einen einzigen Newline:

$result = array_map(
    function ($group) { return explode("\n", $group); }, 
    explode("\n\n", $input) 
); 
+0

nicht wie erwartet. –

+0

Klären! → https://3v4l.org/KpPrq – deceze

+0

erstaunt :) Ich bekomme so: 'Array ([0] => Array ([0] => a [1] => b [2] => c [ 3] => [4] => d [5] => e [6] => f [7] => [8] => g [9] => h [10] => i)) –

0

So etwas sollte weiß nicht funktionieren, wenn es anicer Weg ist

$exploded_values = explode("\n", $input); 

$i = 0; 
$amount_of_exlodes = 0; 

foreach($explodes_values as $exploded_value){ 
$test[$i][] = $exploded_value; 
$amount_of_explodes ++; 
if($amount_of_explodes >= 3){ 
    $amount_of_explodes = 0; 
    $i++; 
} 

} 
+1

Ich empfehle diesen mutigen Stich in die Dunkelheit ... – deceze

+0

Nun er will ein neues Array in einem Array alle 3 mal richtig .. Das könnte funktionieren Ich ahvent getestet es aber hey .. Und es ist wahrscheinlich nicht der schönste Code, aber es wird Arbeit. –

+0

* "Er möchte alle 3 mal ein neues Array in einem Array haben" * - genau das wissen wir hier nicht ... Könnte eine völlig andere Logik sein. – deceze