2017-06-28 2 views
0

Meine Frage mag keinen Sinn ergeben, aber nachdem ich alle Arten von array_chunk ausprobiert habe und explodiert, kann ich keinen einfachen Weg finden, mein Problem zu lösen.Wie kann ich ein Array in ein verschachteltes Array aufteilen, indem ich jedes Element aufspalte?

Letztlich, ich habe ein Textfeld, das ich Daten in der Lage sein wollen, geben Sie wie folgt aus:

<textarea> 
    Song 1 by Artist 1 
    Song 2 by Artist 2 
    Song 3 by Artist 1 
    Song 4 by Artist 3 
    Song 5 by Artist 3 
</textarea> 

Ich möchte schließlich ein Array erstellen, die ich filtern und Loop-out kann, und jeder Song-Titel greifen und Künstler Titel, und haben ein verschachteltes Array.

Bisher kann ich explode("\n", $source) verwenden ein einfaches Array zu erstellen:

array (size=5) 
    0 => string 'Song 1 by Artist 1' (length=19) 
    1 => string 'Song 2 by Artist 2' (length=19) 
    2 => string 'Song 3 by Artist 1' (length=19) 
    3 => string 'Song 4 by Artist 3' (length=19) 
    4 => string 'Song 5 by Artist 3' (length=18) 

Aber ich will jetzt weiter innen dies für jeden Songtitel und Interpret Titel ein Array zu erstellen, so dass es aussehen wird:

array (
    0 => array(
    'title' => 'Song 1', 
    'artist' => 'Artist 1 
), 
    1 => array(
    'title' => 'Song 2', 
    'artist' => 'Artist 2 
) 
    etc. 

Wie kann ich die anfängliche Explosionsfunktion erweitern, um die endgültigen Array-Werte als Liste auslesen zu können?

+1

Ist der Benutzer garantiert, dass jedes Mal das genaue Format eingegeben wird? – RiggsFolly

+0

Ja, dieses Format wird immer das sein. Der Benutzer wird ich selbst sein, und eine kleine Gruppe von Mitgliedern, die ich anweisen kann, wie man eintritt. Ein Platzhalter im Textfeld hilft ebenfalls. – Lee

Antwort

2

Hier habe ich in PHP Funktions verwenden, um Daten zu extrahieren

$arrays = [ 
    "Song 1 by Artist 1", 
    "Song 2 by Artist 2", 
    "Song 3 by Artist 1", 
    "Song 4 by Artist 3", 
    "Song 5 by Artist 3", 
]; 
$result = []; 

array_walk($arrays, function ($data) use (&$result) { 
    $fields = explode(' by ', $data); 
    $result[] = [ 
     "title" => $fields[0], 
     "artist" => $fields[1], 
    ]; 
}); 

print_r($result); 
1
$songList = explode("\n", $source); 

foreach($songList as &$value) { 
    $interim = explode(" by ", $value); 
    $value = ['title' => $interim[0], 'artist' => $interim[1]]; 
} 
1

dann müssen Sie verteilen in $row = explode(' by ', $array) mit Code

$mainArray = explode("\n", $text); 
$list = []; 
foreach ($mainArray as $oneRow) { 
    $row = explode(' by ', $oneRow); 
    $list[] = [ 
     'artist' => $row[1], 
     'title' => $row[0] 
    ]; 
} 
1

Hier gehen Sie

$arr = explode("\n", $string); 
foreach ($arr as $item) { 
    $set = explode(" by ", $item); 
    $result[] = array_combine(["title", "artist"], $set); 
} 
var_dump($result); 
Verwandte Themen