2016-10-11 5 views
0

Sie möchten ein mehrdimensionales Array aus einer Zeichenfolge erstellen. Meine Zeichenfolge ist:So erstellen Sie ein mehrdimensionales Array aus der Zeichenfolge

13,4,3 | 65,1,1 | 27,3,2

ich es in einem Array gespeichert werden soll, die ich so aussehen würde ich davon aus:

$multi_array = array 
    (
    array(13,4,3), 
    array(65,1,1), 
    array(27,3,2) 
); 

So kann ich es mit $ multi_array [1] [1] aufrufen, die "4" zurückgeben sollte.

Hier ist der Code, den ich bisher habe:

$string = "13,4,3|65,1,1|27,3,2"; 
$explode = explode("|", $string); 
$multi_array = array(); //declare array 

    $count = 0; 

foreach ($explode as $value) { 

    $explode2 = explode(",", $value); 

    foreach ($explode2 as $value2) { 
    // I'm stuck here....don't know what to do. 
    } 
    $count++; 
} 
echo '<pre>', print_r($multi_array), '</pre>'; 

Antwort

1

auf diese Weise versuchen,

$data = '13,4,3|65,1,1|27,3,2'; 

$return_2d_array = array_map (
    function ($_) {return explode (',', $_);}, 
    explode ('|', $data) 
); 

print '<pre>'; 
print_r ($return_2d_array); 
print '</pre>'; 

OR mit Ihrem eigenen Code

$string = "13,4,3|65,1,1|27,3,2"; 
$explode = explode("|", $string); 
$multi_array = array(); //declare array 

$count = 0; 

foreach ($explode as $key=>$value) { // see changes on this line 

    $explode2 = explode(",", $value); 

    foreach ($explode2 as $value2) { 
    $multi_array[$key][$count] = $value2; 
    $count++; // see count variable position changes here 
    } 

} 
echo '<pre>', print_r($multi_array), '</pre>'; 
+0

Wow! So schnell. Vielen Dank für deine Antwort Charlie, oder ist es Mac ... oder Deandra? Wie auch immer, sehr geschätzt :) Es lässt mich deine Antwort noch nicht annehmen, weil du zu schnell geantwortet hast. – KeepCool

+0

@KeepCool, aber Sie können es jetzt tun, indem Sie es als akzeptierte Antwort markieren :) –

3

Ihre äußere foreach Schleife ist richtig . Sie brauchen Ihre innere Schleife jedoch nicht, da explode ein Array zurückgibt. hängen Sie einfach dieses Array zu Array Ihr Ergebnis, und Sie werden kann ein 2D-Array

$input = "13,4,3|65,1,1|27,3,2"; 

$result = []; 

foreach (explode('|', $input) as $split) 
    $result[] = explode(',', $split); 

print_r($result); 
0

Sie verwenden erhalten die explodieren Funktion eine Zeichenfolge mit Trennzeichen, in diesem Fall '|', wie diese aufgeteilt:

PHP:

$data = '13,4,3|65,1,1|27,3,2'; 

$new_arrays = explode('|', $data); // with this you can separate the string in 3 arrays with the demiliter '|' 

Hier ist die Dokumentation von explodieren: http://php.net/manual/en/function.explode.php

Grüße!

Verwandte Themen