Der schnellste Weg, ein assoziatives Array mit Schlüsseln zu implodieren
Lesezeit: 4 Minuten
matpie
Ich suche nach einer schnellen Möglichkeit, ein assoziatives Array in eine Zeichenfolge umzuwandeln. Eine typische Struktur wäre wie eine URL-Abfragezeichenfolge, aber mit anpassbaren Trennzeichen, damit ich „&‘ für xhtml-Links oder ‘&‘ Andernfalls.
Meine erste Neigung ist zu verwenden foreach aber da meine Methode viele Male in einer Anfrage aufgerufen werden könnte, befürchte ich, dass sie zu langsam sein könnte.
Vergessen Sie nicht, wenn Sie HTML ausgeben, ist die korrekte Syntax & nicht &, iow, das ist falsch JOE ja, es funktioniert, aber es ist ungültiges HTML.
Generiert eine URL-codierte Abfragezeichenfolge aus dem bereitgestellten assoziativen (oder indizierten) Array.
Ich habe versucht, diese Methode in der PHP-API selbst zu finden, das ist definitiv der richtige Weg. Wenn dies nicht der Fall ist, besteht die Alternative darin, eine modifizierte Implodemethode wie z uk2.php.net/manual/en/function.implode.php#84684 aber http_build_query() wird richtig schneller sein.
– Mark Davidson
2. Januar 2009 um 21:11 Uhr
Ich frage mich, ob dies wirklich der schnellste Weg für die allgemeine Frage ist. In dieser Funktion findet eine Codierung statt. Wenn es sich also nicht um eine URL handelt, ist dies wirklich schneller als array_walk und was ist, wenn Sie es nicht codiert haben möchten?
– e-motiv
31. Januar 2014 um 23:12 Uhr
das Problem ist http_build_query Escape-Sonderzeichen
– Sisyphos
9. Februar 2015 um 15:42 Uhr
Ich habe serialize(), json_encode() und http_build_query() verglichen. http_build_query() hat mit einem kleinen Vorsprung vor serialize() gewonnen, und json_encode ist bei weitem am langsamsten.
– Ernst V
24. Februar 2015 um 23:05 Uhr
Es codiert auch Sonderzeichen, daher ist dies keine gute Option
– awavi
10. Juni 2015 um 21:11 Uhr
Wenn Sie sich keine Sorgen um die machen genau Sie möchten jedoch etwas Einfaches formatieren, aber ohne die Zeilenumbrüche print_r kannst du auch verwenden json_encode($value) für eine schnelle und einfache formatierte Ausgabe. (Beachten Sie, dass es auch bei anderen Datentypen gut funktioniert)
Abgesehen davon war ich auf der Suche nach dem besten Weg, ein assoziatives Array zu implodieren, aber mit meinen eigenen Trennzeichen usw.
Also habe ich dies mit der Funktion array_walk() von PHP gemacht, damit ich ein assoziatives Array mit einer Liste von Parametern verbinden kann, die dann auf ein HTML-Tag angewendet werden können ….
// Create Params Array
$p = Array("id"=>"blar","class"=>"myclass","onclick"=>"myJavascriptFunc()");
// Join Params
array_walk($p, create_function('&$i,$k','$i=" $k=\"$i\"";'));
$p_string = implode($p,"");
// Now use $p_string for your html tag
Natürlich könnten Sie das irgendwie in Ihre eigene Funktion einbauen, aber es gibt Ihnen eine Vorstellung davon, wie Sie ein assoziatives Array mit Ihrer eigenen Methode verbinden können. Hoffe das hilft jemandem 🙂
Vergessen Sie nicht, wenn Sie HTML ausgeben, ist die korrekte Syntax & nicht &, iow, das ist falsch JOE ja, es funktioniert, aber es ist ungültiges HTML.
– TravisO
6. Januar 2009 um 18:21 Uhr