problem bei str_replace
Sascha
- php
Hallo zusammen.
Mich plagt da ein Problem!!
Ich möchte jede Ziffer in einem string,
in eine 3 stellige zahl umwandeln.
Also hab ich mir folgendes gedacht:
function change($in) {
$zahl = array("0","1","2","3","4","5","6","7","8","9");
$code= array("056","159","262","365","068","171","295","377","080","183");
$out = str_replace ($zahl, $code, $in);
return $out;
}
$quelle = "9678";
$laenge = strlen($quelle);
for ($i=0; $i<$laenge; $i++) {
$getzahl = substr($quelle,$i,1);
echo $getzahl;
echo "=".change($getzahl)."<br>";
}
Jedoch ist die Ausgabe etwas verwirrrend ?!?
9=183
6=21835
7=377
8=080
9,7 und 8 sind ja ok,
aber Ziffer 6 seltsam !!!
Er scheint die 6 durch 295 korekt zu ersetzten, doch dann ersetzt er aus der 295 die 9 nochmal zu 183 !!!
Wie kann das sein?? Hab ich da nen denkfehler drin oder spinn ich jetzt total ???
ich hoffe es hat jeder soweit verstanden was ich meine!?!
Danke für Eure Antwort(en) im Voraus.
Hi,
Er scheint die 6 durch 295 korekt zu ersetzten, doch dann ersetzt er aus der 295 die 9 nochmal zu 183 !!!
hübsch. Kannst Du in $code mal die "080" durch "976" ersetzen und sehen, was passiert?
Wie kann das sein?? Hab ich da nen denkfehler drin oder spinn ich jetzt total ???
Einen algorithmischen Denkfehler schon, würde ich sagen. Warum arbeitest Du mit str_replace anstatt mit beispielsweise einem einfachen (assoziativen) Array? Was das Spinnen betrifft: Die Anzahl Deiner Satzendezeichen lässt darauf schließen, ja.
Cheatah
hi,
Ich möchte jede Ziffer in einem string,
in eine 3 stellige zahl umwandeln.
das würde ich, wie Cheatah schon sagte, ebenfalls anders angehen.
$neuerString = '';
schleife über alle zeichen im string {
wenn zeichen eine zahl ist {
$neuerString .= $xy; //codezahl, die zur ziffer gehört - bspw. über (assoziatives) array
}
andernfalls {
$neuerString .= $zeichen_aus_string;
}
}
$neuerString enthält anschließend das gewünschte, den originalstring kannst du dann anschließend meinetwegen wegwerfen.
gruß,
wahsaga
Danke für die antworten.
Da wär ich glaube in 100 Jahren nicht drauf gekommen,
ein assoz. Array zu nehmen.
Funktioniert einwandfrei.
$quelle = "9678";
$code= array("0" => "056", "1" => "159", "2" => "262", "3" => "365", "4" => "068", "5" => "171", "6" => "295", "7" => "377", "8" => "080", "9" => "183");
$laenge = strlen($quelle);
for ($i=0; $i<$laenge; $i++) {
$getzahl = substr($quelle,$i,1);
$gesamt .= $code[$getzahl];
}
echo $gesamt;
Dank nochmal an Euch.