2016-04-01 3 views
0

Ich möchte Arrays zu einem String formatieren, weil ich es in meine Log-Datei schreiben möchte. Das Format sollte sein:Array (mit Keys) oder JSON zu String in PHP?

key=value; key1=value1; ... 

Es ist auch mit Arrays mit Schlüsseln oder JSON-Objekten funktionieren soll.

+0

Ich würde entweder 'serialize()' oder 'json' beide sind ziemlich kugelsicher, aber nicht erzeugen das Format Sie sagen, Sie brauchen. Wie wichtig ist das genaue Format? Mit serialize oder json müssen Sie sich keine Gedanken darüber machen, wenn Sie zum ersten Mal auf ein komplexes Array mit Sub-Arrays und Sub-Sub-Arrays stoßen und vielleicht ein Objekt oder 2 hineingeworfen werden. Mit einem einfachen Funktionsaufruf erledigen Sie alles. JSON-Zeichenfolgen sind viel menschlich lesbarer als serialisieren Ausgabe – RiggsFolly

+0

Danke! @ RiggsFolly –

Antwort

0
function arrayToString($array){ 
    $result=""; 
    while($object = current($array)){ 
     $result .= key($array) . "="; 
     if(is_array($object)) { 
      $result .= arrayToString($object); 
     } else { 
      $result .= $object; 
     } 
     $result .= "; "; 
     next($array); 
    } 
    return $result; 
} 

Dort gehen Sie

0

Sie http_build_query() dafür verwenden können:

$data = array("k1" => "v1","k2" => "v2","k3" => "v4"); 
$string = http_build_query($data,"", "; ", PHP_QUERY_RFC1738); 

die "; " ändern, wenn Sie eine andere seperator wollen. Die PHP_QUERY_RFC1738 haben + als Leerzeichen. Dies sollte die Standardeinstellung sein, aber Ihre Kommentare klingen so, als könnten Sie PHP_QUERY_RFC3986 verwenden.

Wenn Sie nicht, dass es ersetzt werden soll:

$string = str_replace("+"," ", $string); 
+0

Danke! Ich habe es versucht, aber es hat es in ein URL-Format codiert, also @ ->% 40 oder so ähnlich –