2015-02-10 2 views
6

Я хотел бы спросить, как я могу получить длину цифр в Integer. Например:PHP - Получить длину цифр в числе

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

$numlength должно быть 6 в этом примере. Почему-то я не могу справиться с этим?

Благодаря

EDIT: Пример кода выше -^и соответствующий ему метод mb_strlen(); работает просто отлично.

+1

Как это не работает? Какие результаты вы получаете? –

+1

Вместо того, чтобы давать много решений, у кого-то есть идея «Почему этот код не работает?». Потому что код должен работать. – Debflav

+0

Опубликованный код [works] (http://3v4l.org/3mOsS) как шарм! – axiac

ответ

21

Может быть:

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

cheers mate, его отлично работает! – supersize

+1

Лучшим решением является использование журнала(), тогда вам не нужно указывать его в строке. – Robert

+0

Использование математических функций, таких как 'log()', не читается для меня. Я считаю, что программист! = Математик – evilReiko

1

Более элегантный способ :)

ceil(log10($num)); 
+0

'$ num = 10;' и это не сработает :) – Robert

1

Вы можете также использовать некоторые основные математику!

$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

Некоторая математика иногда помогает.

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

$ базы является база системы счисления вы можете рассчитывать длину любой системы, например двоичном или шестнадцатеричном только некоторой модификацией $ основания.

Вы также можете использовать функцию log10()

0

Только с помощью какой-то вариант (int)(log($num,10)+1) терпит неудачу на 10, 100, 1000 и т.д. подсчитывает число 10 как 1 цифра, 100 как две цифры и т.д. Он также не с 0 или любое отрицательное число.
Если вы должны использовать математику (и это число неотрицательное), используйте:
$numlength = (int)(log($num+1, 10)+1);

Или для математического решения, которое подсчитывает цифры в положительных или отрицательных числах:
$numlength = ($num>=0) ? (int)(log($num+1, 10)+1) : (int)(log(1-$num, 10)+1);

Но решения STRLEN в PHP очень быстро развивается.

Смежные вопросы