2015-02-10 9 views
6

Ich möchte fragen, wie ich die Länge der Ziffern in einem Integer bekommen kann. Zum Beispiel:PHP - Get Länge der Ziffern in einer Zahl

$num = 245354; 
$numlength = mb_strlen($num); 

$numlength sollten 6 in diesem Beispiel sein. Irgendwie kann ich es nicht schaffen zu arbeiten?

Dank

EDIT: Das obige Beispiel-Code -^und ihre jeweilige Methode mb_strlen(); ganz gut funktioniert.

+1

Wie funktioniert es nicht? Welche Ergebnisse bekommst du? –

+1

Anstatt viele Lösungen zu geben, hat jemand eine Idee über "Warum funktioniert dieser Code nicht?". Weil der Code funktionieren sollte. – Debflav

+0

Der gepostete Code [funktioniert] (http://3v4l.org/3mOsS) wie ein Zauber! – axiac

Antwort

21

Vielleicht:

$num = 245354; 
$numlength = strlen((string)$num); 
+0

Prost Mate, es funktioniert gut! – supersize

+1

Bessere Lösung ist die Verwendung von log(), dann müssen Sie es nicht in eine Zeichenfolge umwandeln. – Robert

+0

Die Verwendung von mathematischen Funktionen wie 'log()' ist für mich nicht lesbar. Ich glaube, dass Programmierer! = Mathematiker – evilReiko

1

eleganteren Weg :)

ceil(log10($num)); 
+0

'$ num = 10;' und es wird nicht funktionieren :) – Robert

1

Sie auch einige grundlegende mathematische verwenden könnte!

$digits = (int)(log($num,10)+1) 

<?php 
    $num = 123; 
    $num2 = 1234; 
    $num3 = 12345; 

    function digits($num){ 
    return (int) (log($num, 10) + 1); 
    } 

    echo "\n $num: " . digits($num); // 123: 3 
    echo "\n $num2:" . digits($num2); // 1234: 4 
    echo "\n $num3:" . digits($num3); // 12345: 5 
    echo "\n"; 
3

Irgendein Mathe hilft manchmal.

$base = 10; 
$num = 12357; 
echo floor(log($num, $base) + 1); 

$ Base ist die Basis-Zahlensystem Sie Länge eines jeden Systems zum Beispiel binäre oder Hex nur durch eine Änderung von $ Basis zählen.

Sie können auch log10() Funktion

0

nur mit einiger Version von (int)(log($num,10)+1) für 10 ausfällt, 100, 1000, etc. Es die Zahl 10 als 1 Stelle zählt, 100 als zwei Ziffern usw. Es schlägt fehl, auch mit 0 oder irgendeine negative Zahl.
Wenn Sie Mathe (und die Zahl ist nicht-negativ) verwenden müssen, verwenden:
$numlength = (int)(log($num+1, 10)+1);

Oder für eine mathematische Lösung, die die Ziffern in positiven oder negativen Zahlen zählt:
$numlength = ($num>=0) ? (int)(log($num+1, 10)+1) : (int)(log(1-$num, 10)+1);

Aber die Strlen Lösung ist in PHP ungefähr so ​​schnell.

Verwandte Themen