[code]<em>NModern (Profil) (22:30, 07/12/2013 ) #34454
bu yazdigin funksiyada ne bash verdiyini izah ede bilersen?</em>[/code]
3 və 4-cü arqument işlədilməyib. Daha doğrusu susma halına görə saxlanılıb.
1-ci arqument bu substr($n, 0, is_int($n) || strlen((int)$n) >= 4 ? 3 : 4)
2-ci arqument isə budur 3 - strlen((int)$n)
Funksiya nə edir ?
Verilmiş rəqəmi is_int yoxlayır tam ədəddir ya yox, tam ədəddirsə və ya rəqəmi (int) ilə zorla tam ədədə çevirib saydıqda 4-dən böyük bərabərdisə verilmiş rəqəmin ilk 3 həddini kəsirik.
Məs, verilmiş rəqəm = 3456.67 burda is_int qəbul eləmir, (int) çevirir olur 3456 strlen 4 sayır, demək ki ilk üçünü kəsmək lazımdır. Qalır 345.
Alınır number_format(345, -1); Burda isə 4-cü arqument minliklərə ayırdığı üçün -1 heç bir rol oynamır. Çünki ədəd 3 rəqəmdən ibarətdir, minliklərə ayrıla bilmir.
Qalan bütün hallarda isə verilmiş rəqəmi kəsmirik, çünki tam ədəd olmur. Və (int) ilə çevirdikdə belə sayı 4-dən kiçik olur. Demək ki, kəsməyə ehtiyac yoxdur. Olduğu kimi saxlayırıq. Məsələn, 34.5 olarsa rəqəm. substr heç nə etmir. (int) 34.5 verir 34. 3-2 qalır 1. Nəticə number_format(34.5, 1); => 34.5
bu yazdigin funksiyada ne bash verdiyini izah ede bilersen?
bildiyim qeder ile number_format funksiyasinin 3cu ve 4cu arqumentleri noqte nin ve minliyi ayirmanin simvolunu gosterir. bunu nece islediyini basa dusmek isteyirem, faktiki olaraq 3-cu ve 4-cu arqumentlerin yerine yazmisan.
Version 1.3
Bəzi ədədlər string kimi verildikdə funksiya düz işləmirdi.
[code]function _Convert($n)
{
return number_format(substr($n, 0, is_int($n) || strlen((int)$n) >= 4 ? 3 : 4), 3 - strlen((int)$n));
}[/code]
Çünki string kimi daxil etmisən rəqəmi. Amma bunu da həll etmək lazımdı.
bu funksiya 5435 uchun 5,435 qaytarir.
cox sagolun, sonuncu functionlariniz ishime yaradi, Allah sizden razi olsun. eziyyetinizi halal eleyin
PHP-də çarəsiz heç nə yoxdu :)
[code]function _Convert($n)
{
return number_format(substr($n, 0, is_int($n) || strlen((int)$n) > 4 ? 3 : 4), 3 - strlen((int)$n));
}
[/code]
[code]
<?
function aaa($a){
$c = $a*100;
if(strlen($c)>=5){
$b = substr($c, 0, 3);
}
else{
$d = pow(10,-2);
$b = number_format($c*$d,2);
$b = substr($b, 0, 4);
}
return $b;
}
echo aaa("5435")."<br/>";
echo aaa("20.1")."<br/>";
echo aaa(2.01)."<br/>";
echo aaa("1")."<br/>";
?>
[/code]
bes 20.1 nece olsun?
chox sagolun eziyyet chekmisiz haminiza teshekkur edirem ama bu yazdiqin kodlar menim ishimi tam gormur. )
yeni bunlar ancag tam ededleri ishleyir qaliqli ededlerde ise ishlemir.
mene lazim idi meselcun 1.85 ise ele 1.85 qalsin 1 ise 1.00 olsun, ve ya 2354 ise 235 olsun. duzdur 1=1.00 ve 2354=235 alinir ama 1.85 de, 1.3545 ve ya 3543.22 oldugda artiq pass verir kodlar )
Bu isə daha mükəmməl forması :)
[code]function _Convert($n)
{
return number_format(substr($n, 0, 3), 3 - strlen($n));
}[/code]
Bu da funksiya kimi
[code]function _Convert($n)
{
return strlen($n) >= 3 ? substr($n, 0, 3) : number_format($n, 3 - strlen($n));
}[/code]
[code]$numbers = array(1, 200, 300, 45756, 3456, 2, 22);
foreach($numbers as $value)
echo $value . ' = ' . (strlen($value) >= 3 ? substr($value, 0, 3) : number_format($value, 3 - strlen($value))) . '<br/>';
//Nəticə:
1 = 1.00
200 = 200
300 = 300
45756 = 457
3456 = 345
2 = 2.00
22 = 22.0[/code]
Buyur.
[code]
function convert_to($a) {
$len = strlen($a);
if($len == 3)
return $a;
if($len > 3)
return substr($a, $len-3);
if($len < 3)
return $a.'.'.str_repeat(0,(3-$len));
}
echo convert_to(5).'<br/>'; // 5.00
echo convert_to(55).'<br/>'; // 55.0
echo convert_to(555).'<br/>'; // 555
echo convert_to(5555); // 555
[/code]
Mehman Elxanoglu, qardaş problem elә ordadırki әdәd dinamik deyil deyişgәndir, gah 3dәn böyük gahda 3dәn kiçik olur.
Yenə də number_format() funksiyasından istifadə etməklə:
əgər ədəd 10-dan kiçikdirsə, echo number_format($a, 2); // 1.80
əgər ədəd 100-dən kiçik 10-dan böyük və ya bərabərdirsə, echo number_format($a, 1); // 27.0
qalan hallarda adi çap kimi...
üzr istəyirəm mən fikrimi çatdira bilməmişəm, suali səhv vermişəm .
yeni mənə lazımdıki 1=1.00, 198=198. 1578=157 kimi göstərsin. yeni ədəd sayını 3 rəqəmli olaraq saxlasin 1=1.00 göstərirsə 198=198.00 kimi göstərməsin elə 198 kimi göstərsin
Salam. number_format() funksiyasından istifade ede bilərsən bunun üçün.
[code]
$a = 1.8;
$b = 2;
$c = 2.1;
echo number_format($a, 2); // 1.80
echo number_format($b, 2); // 2.00
echo number_format($c, 2); // 2.10
[/code]
Qeydiyyat səhifəsində Check Login buttonu
Php, MySQL,CSS,HTML,Jquery,Ajax əla səviyyədə bilirəm lakin?