Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP strings einfügen (https://www.delphipraxis.net/91460-php-strings-einfuegen.html)

toms 5. Mai 2007 07:49


PHP strings einfügen
 
Hallo

Ich bin neu bei PHP und möchte in einen string z.B
$mystring = "12345"; Kommas einfügen.

Das Resultat ($myoutput) soll so aussehen:

1, 2, 3, 4, 5

Bis jetzt sieht der code so aus:

Code:
$myoutput = "";
for ($i = 0; $i < strlen($mystring); $i++){
 if ($i < strlen($mystring) -1) {
 $myoutput .= $myoutput.$mystring[$i].", ";
 } else
 {
 $myoutput .= $myoutput.$mystring[$i];
 }
}
Er funktioniert schon halbwegs. Bug:

Wenn z.B $mystring = "34"; ist, dann gibt es 3, 3, 4 aus...

Kann man die Funktion evtl noch schöner schreiben?

Danke für Hinweise - Antworten

mkinzler 5. Mai 2007 07:55

Re: PHP strings einfügen
 
Code:
$myoutput = "";
for ($i = 0; $i < strlen($mystring); $i++){
    if ($myoutput != "") {
        $myoutput .= ", ";
    }
    $myoutput .= $myoutput.$mystring[$i];
}

toms 5. Mai 2007 08:06

Re: PHP strings einfügen
 
Danke fuer die schnelle Antwort

Bei deinem Code passiert jedoch das gleiche:

Wenn z.B $mystring = "34"; ist, dann gibt es 3, 3, 4 aus...

mkinzler 5. Mai 2007 08:11

Re: PHP strings einfügen
 
Hier war es doppeltgemoppelt:
Code:
$myoutput .= $mystring[$i];

toms 5. Mai 2007 09:18

Re: PHP strings einfügen
 
Danke, funktioniert nun bestens!

yankee 5. Mai 2007 15:12

Re: PHP strings einfügen
 
Benchmarke das doch mal gegen diese Lösung:
$myoutput =substr(preg_replace('/(.)/','\\1,',$mystring),0,-1);

Code:
for ($i = 0; $i < strlen($mystring); $i++)
{
  if ($myoutput != "") $myoutput .= ",";
  $myoutput .=$mystring[$i];
}
--> ~0.118 Sekunden
mit ++$i statt $i++
--> ~0.114 Sekunden
Code:
$myoutput =substr(preg_replace('/(.)/','\\1,',$mystring),0,-1);
--> ~0.073 Sekunden

Alle Werte verstehen sich über 10K iterationen und dann der Durschniktt mehrerer Aufrufe.
Ich habe viel damit rumgespielt, aber ich habe die Performance der ersten Lösung nicht nennswert anheben können. Die Regexlösung liegt weit vorne und ist auch noch die kürzeste :-).

S2B 5. Mai 2007 23:12

Re: PHP strings einfügen
 
Wenn ihr schon am Benchmarken seid, wie wäre es mit dieser Lösung:
Code:
$myoutput = substr(chunk_split($mystring, 1, ', '), 0, -2);
Ach ja: Die for-Lösung sollte so schneller werden:
Code:
for ($i = 0, $strlen = strlen($mystring); $i < $strlen; $i++)

yankee 5. Mai 2007 23:34

Re: PHP strings einfügen
 
Zitat:

Zitat von S2B
Wenn ihr schon am Benchmarken seid, wie wäre es mit dieser Lösung:
Code:
$myoutput = substr(chunk_split($mystring, 1, ', '), 0, -2);

Winner!
0,03 Sekunden!

S2B 6. Mai 2007 12:10

Re: PHP strings einfügen
 
Zitat:

Zitat von yankee
Winner!
0,03 Sekunden!

:firejump: :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz