2017-03-21 3 views
0

Ich fand diesen Code in einem anderen Beitrag, die ich fand ziemlich hilfreich, aber für mich ist es nur die Hälfte der Gleichung. Inline mit dem folgenden Code, ich muss die Zeichenfolge aus einer Datenbank nehmen, explodieren Sie es in das 2d-Array, bearbeiten Sie Werte im Array und implodieren sie wieder bereit für die Speicherung im selben Format. also genau rückwärts in der gleichen Reihenfolge wie das bestehende Skript.PHP explodieren und zuweisen zu einem mehrdimensionalen Array MKII :)

kann mir bitte jemand von assistenten helfen? :) Danke!

der Code aus dem anderen Post >>

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 
$data = explode(" \n ", $data); 

$out = array(); 
$step = 0; 
$last = count($data); 
$last--; 

foreach($data as $key=>$item){ 

    foreach(explode(' ',$item) as $value){ 
    $out[$key][$step++] = $value; 
    } 

    if ($key!=$last){ 
    $out[$key][$step++] = ' '; // not inserting last "space" 
    } 

} 

print '<pre>'; 
print_r($out); 
print '</pre>'; 
+0

Also, was hast du probiert? Außerdem: Warum möchten Sie einzelne Leerzeichen zeitweise in Ihrem * $ out * -Array speichern? Wie ist das nützlich? – trincot

+1

Was ist das Endergebnis, dass Sie wollen, angesichts der Eingabe von "Ich liebe lustige Filme \ n Ich liebe Stackoverflow dot com \ n Ich mag Rock-Song"? – AbraCadaver

+0

Um das letzte Leerzeichen einzufügen, musst du $ last-- auskommentieren/entfernen; –

Antwort

0

Der angegebene Code fügt separate Array-Elemente, die nur einen Raum als Wert haben. Man kann sich fragen, welchen Nutzen diese bringen.

Hier sind zwei Funktionen könnten Sie verwenden:

function explode2D($row_delim, $col_delim, $str) { 
    return array_map(function ($line) use ($col_delim) { 
     return explode($col_delim, $line); 
    }, explode($row_delim, $str)); 
} 

function implode2D($row_delim, $col_delim, $arr) { 
    return implode($row_delim, 
     array_map(function ($row) use ($col_delim) { 
      return implode($col_delim, $row); 
     }, $arr)); 
} 

sie sich gegenüber den anderen sind und funktionieren ähnlich wie die Standard-explodieren und implodieren Funktionen, mit der Ausnahme, dass Sie zwei Trennzeichen angeben müssen: ein um die Zeilen zu begrenzen, und einen anderen für die Spalten.

Hier ist, wie Sie es verwenden würde:

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 

$arr = explode2D(" \n ", " ", $data); 

// manipulate data 
// ... 
$arr[0][2] = "scary"; 
$arr[2][2] = "balad"; 

// convert back 

$str = implode2D(" \n ", " ", $arr); 

Sehen Sie es auf repl.it laufen.

+0

Dieser Mann ist ein Experte, verdammt gute Arbeit, Sir. Darf ich fragen, wie Sie ein ungewöhnliches Trennzeichen, d. h. Þ oder ¶, in einer MySQL-Datenbank speichern können? –

+0

Um alle Arten von Zeichen in Ihrer MySQL-Datenbank zu berücksichtigen, lesen Sie [diese Q & A] (http://stackoverflow.com/q/279170/5459839): Es gibt mehrere Dinge zu prüfen und möglicherweise zu tun. – trincot

+0

vielen Dank –

Verwandte Themen