Variable zerlegen
Jan K.
- php
Hallo zsuammen,
wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?
Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.
Gruß,
Jan
hi,
wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?
Wenn das ein String ist, brauchst du ihn gar nicht "zerlegen", sondern kannst gleich auf die einzelnen Zeichen über einen nullbasierten Offset zugreifen.
Wenn's stattdessen eine Zahl wäre - na dann dividierst du halt nacheinander durch aufsteigende Zehnerpotenzen, und ziehst dabei jeweils vor dem nächsten Schritt die "letzte Stelle" ab.
Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.
Für String: Unter Typen -> Strings nachschauen ...?
Für Zahl: Zeitreise zurück, und im Matheunterricht besser aufpassen :-)
gruß,
wahsaga
Hm,
hab das aus deinem link zum manual so probiert:
$string='Zickezacke';
$string1= $string{0};
echo $string."<br>"; //Zickezacke
echo $string1."<hr>"; //Z
$wert=31415;
$zahl='$wert';
$zahl1= $zahl{0};
echo $wert."<br>"; //31415
echo $zahl1."<hr>"; //$
$wert=31415;
$zahl=$wert;
$zahl1= $zahl{0};
echo $wert."<br>"; //31415
echo $zahl1."<hr>"; //
Ist das kein string mehr wenn da eine zahl drinsteht?
Ich bekomme nur einen übergabewert, in dem eine zahl drinsteht.
Muss ich dann mit arithmetischen operatoren ran, so wie du das mit den zehnerpotenzen meintest?
Oder gibts einen Operator der mir eine Zahl in einzelne STellen zerlegen kann?
Gruß,
Jan
Du sagtest ja:
---
Wenn's stattdessen eine Zahl wäre - na dann dividierst du halt nacheinander durch aufsteigende Zehnerpotenzen, und ziehst dabei jeweils vor dem nächsten Schritt die "letzte Stelle" ab.
---
Damit hat sich mein anliegen ereldigt ;)
Guter Ansatz so mach ichs, danke.
Gruß,
Jan
Danke für den tip mit dem typecast Ashura, hat prima geklappt!
Falls es noch wen interessiert, ich hab das problem folgendermaßen gelöst:
$int_wert = $inhalt[0]; //Aus der $inhalt[0] kommt die zahl
$str_wert = (string) $int_wert;
$length=strlen($str_wert);
for ($start=0; $start<=$length; $start++) {
if ( $str_wert{$start} == 0) {
$gesammt[$start]="<img src='images/0.gif'>";}
if ( $str_wert{$start} == 1) {
$gesammt[$start]="<img src='images/1.gif'>";}
if ( $str_wert{$start} == 2) {
$gesammt[$start]="<img src='images/2.gif'>";}
if ( $str_wert{$start} == 3) {
$gesammt[$start]="<img src='images/3.gif'>";}
if ( $str_wert{$start} == 4) {
$gesammt[$start]="<img src='images/4.gif'>";}
if ( $str_wert{$start} == 5) {
$gesammt[$start]="<img src='images/5.gif'>";}
if ( $str_wert{$start} == 6) {
$gesammt[$start]="<img src='images/6.gif'>";}
if ( $str_wert{$start} == 7) {
$gesammt[$start]="<img src='images/7.gif'>";}
if ( $str_wert{$start} == 8) {
$gesammt[$start]="<img src='images/8.gif'>";}
if ( $str_wert{$start} == 9) {
$gesammt[$start]="<img src='images/9.gif'>";}
}
echo " <table cellpadding='0'cellspacing='0'border='0'align='center'><tr> ";
for ($start=0; $start<=($length-1); $start++) {
echo "<td>$gesammt[$start]</td>";
}
echo "</tr></table>";
Nun kann ich auch schlafen gehen ;)
echo $begrüßung;
for ($start=0; $start<=$length; $start++) {
if ( $str_wert{$start} == 0) {
$gesammt[$start]="<img src='images/0.gif'>";}
if ( $str_wert{$start} == 1) {
$gesammt[$start]="<img src='images/1.gif'>";}
usw. usf.
Fällt dir etwas auf? Du prüfst, ob ein Teil einer Variablen einen bestimmten Wert hat, um dann den gleichen Wert in einem anderen String zu verwenden. Und das ganze x-mal. Warum setzt du nicht gleich diesen anderen String aus den Festanteilen und dem variablen Wert zusammen?
echo "$verabschiedung $name";
Hallo Jan.
$wert=31415;
$zahl='$wert';
$zahl1= $zahl{0};
echo $wert."<br>"; //31415
echo $zahl1."<hr>"; //$
Hier deklarierst du $wert und verwendest es darauf hin im gesamten Block nicht ein einziges mal wieder, Absicht?
$wert=31415;
$zahl=$wert;
$zahl1= $zahl{0};
echo $wert."<br>"; //31415
echo $zahl1."<hr>"; //Ist das kein string mehr wenn da eine zahl drinsteht?
Natürlich nicht. Wenn dem nicht so wäre, wäre der Datentyp Integer (und Float) ziemlich überflüssig, meinst du nicht auch?
Oder gibts einen Operator der mir eine Zahl in einzelne STellen zerlegen kann?
Zum Beispiel per Typecast:
$int_wert = 31415;
$str_wert = (string) $int_wert;
echo $str_wert{0} // 3
Einen schönen Montag noch.
Gruß, Ashura
Hallo Ingrid.
echo $wert."<br>"; //31415
[…]Hier deklarierst du $wert und verwendest es darauf hin im gesamten Block nicht ein einziges mal wieder, Absicht?
Ich gehe jetzt schlafen.
Eine schöne Montagnacht noch.
Gruß, Ashura
Vielen Dank,
Type Cast ist ja wohl prädestiniert für das was ich vorhabe.
Trozedem hab ich keine Ahnung wie ich das PHP Manual lesen soll.
Wenn ich jetzt irgendwas machen will, wie z.b. eine zahl in einzelen stellen zerlegen und in der suchfunktion "Zahl zerlegen" eingebe ist wohl klar das ich so nicht fündig werde.
Wahrscheinlich muss man wohl einen gesammtüberblick über PHP haben damit man sich die entsprechende funktion raussuchen kann.
Gruß,
Jan
hallo,
wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?
Behandle sie als Array.
Ich bräcuhte denn auch mal einen tip, wie ich so eine funktion z.b. im php manual finde.
Das Manual hat eine sehr gut funktionierende Suchfunktion.
Grüße aus Berlin
Christoph S.
hi,
wie kann ich eine variable die z.b. den wert 31415 beinhaltet in die einzelnen bestandteile 3,1,4,1,5 zerlegen?
Behandle sie als Array.
Nee, lieber nicht.
gruß,
wahsaga
hi,
Behandle sie als Array.
Nee, lieber nicht.
Der Verweis auf dein posting ist meines Erachtens als Begründung der Ablehnung meines Vorschlags nicht ausreichend (hach, hab ich das nicht schön gesagt - ich bin stolz auf mich!).
Grüße aus Berlin
Christoph S.
hi,
Der Verweis auf dein posting ist meines Erachtens als Begründung der Ablehnung meines Vorschlags nicht ausreichend (hach, hab ich das nicht schön gesagt - ich bin stolz auf mich!).
Dann folge doch dem Link zum Manual in meinem Posting, lies dort nach - und dann sei weiter/wieder stolz auf dich :-)
gruß,
wahsaga