2015-02-10 26 views
6

Bir Tam Sayıda basamak uzunluğunu nasıl alabileceğimi sormak istiyorum. Örneğin:PHP - Bir sayıdaki sayıların uzunluğu

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

$numlength bu örnekte 6 olmalıdır. Bir şekilde işe yaramaya başlayamıyorum?

Teşekkür

DÜZENLEME: Yukarıdaki örnekte kod -^ve gayet güzel çalışıyor mb_strlen(); kendi ilgili yöntem.

+1

Nasıl çalışır? Ne sonuçları alıyorsunuz? –

+1

Birçok çözüm vermek yerine, birisinin "Neden bu kod çalışmıyor?" Hakkında bir fikri vardır. Çünkü kod çalışmalı. – Debflav

+0

Gönderilen kod [works] (http://3v4l.org/3mOsS) bir çekicilik gibi! – axiac

cevap

21

Belki:

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

şerefsiz, iyi çalışıyor! – supersize

+1

daha iyi bir çözüm, log() işlevini kullanmaktır, daha sonra dizeye atmanız gerekmez. – Robert

+0

'log()' gibi matematik fonksiyonlarını kullanmak bana okunamıyor. Ben programcı! = Matematikçi – evilReiko

1

Daha zarif yolu :)

ceil(log10($num)); 
+0

'$ num = 10;' inanıyorum ve işe yaramayacak :) – Robert

1

Ayrıca bazı temel matematik kullanabilirsiniz!

$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

Bazı matematik bazen yardımcı olur.

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

$ tabanı sadece $ tabanının bazı değişikliği ile ikili örneğin veya hex herhangi sistemin uzunluğu sayabilir taban sayısı sistemidir.

Ayrıca log10() işlevini kullanabilirsiniz

0

Sadece (int)(log($num,10)+1) bazı sürüm 10, 100, 1000, vb vb Ayrıca başarısız 1 basamak, 100 iki yanı basamak olarak numarayı 10 sayar başarısız kullanarak 0 veya herhangi bir negatif sayı. Matematiği kullanmalıdır (ve sayı olmayan negatif) ise
kullanın:
$numlength = ($num>=0) ? (int)(log($num+1, 10)+1) : (int)(log(1-$num, 10)+1);

Ama strlen çözümü:
$numlength = (int)(log($num+1, 10)+1);

Veya pozitif VEYA negatif sayılarda basamak sayar bir matematik çözümü için PHP'de hemen hemen aynı.

İlgili konular