führende Null

jenno

Erfahrenes Mitglied
Ich habe hier mal eine Testfunktion, die ich gleich mal mit zwei Werten aufrufe.

PHP:
function fuehrendeNull($zahl1, $zahl2) {
	echo("Zahl1: ".$zahl1."<br>Zahl2: ".$zahl2."<br><br>");
}
$x = 00140;
$y = 140;
fuehrendeNull($x, $y);

-----Ausgabe------
Zahl1: 96
Zahl2: 140

Was macht php hier? Und wie kann ich php in meiner Funktion davon überzeugen, dass 00140 nicht 96 ist, sondern 140?
 
Ja, ok. Das funktioniert auch. Aber ich suche ein Möglichkeit, wie ich das innerhalb der Funktion abfangen kann. Weil eigentlich weiss ich ja nicht von vornherein, dass da so ne komische "Zahl" übergeben wird.

EDIT: Das war an Ludz
 
Original geschrieben von jenno
Gibts hier echt keine Lösung für?
Da in diesem Falle der Wert in der Variablen $zahl1 eine Oktalzahl ist, musst Du sie dementsprechend umformatieren:

PHP:
<?php

function fuehrendeNull($zahl1, $zahl2) {
    $output = "Zahl1: %o<br>Zahl2: %d<br><br>";
    printf($output,$zahl1,$zahl2);
}

$x = 00140;
$y = 140;
fuehrendeNull($x, $y);

?>
Ausgabe:
Code:
Zahl1: 140
Zahl2: 140
Das brauchst Du aber auch NUR wenn die Variable wirklich vom Typ integer ist. Kommt der Wert beispielsweise aus einer GET-Variable, so ist die Variable automatisch vom Typ string.

Hilfreiche Links:
http://www.php-homepage.de/manual/language.types.integer.php
http://de2.php.net/sprintf
 
Aber wenn ich nicht von vornherein weiss, was das für eine Zahl ist, dann ist es wohl doch am Schlauesten, den Weg über den String zu nehmen? So dass ich sowieso erstmal die Zahlen als Strings übergebe und dann alles in Zahlen mittels (int) umwandle?

Tja, das hat man dann eben von einer automatischen Typenkonvertierung! :(

Auf jeden Fall könnte man das dann so lösen, auch wenns doch irgendwo weh tut...

PHP:
function fuehrendeNull($zahl1, $zahl2) { 
	$zahl1 = (int)strval($zahl1);
	$zahl2 = (int)strval($zahl2);
    	echo("Zahl1: $zahl2<br>Zahl2: $zahl2<br><br>");
} 

$x = 00140; 
$y = 140; 
fuehrendeNull($x, $y);
 
Zuletzt bearbeitet:
Zurück