PHP’de Matematiksel İşlem ve Fonksiyonlar

PHP programlama dilinde 4 işlem gibi basit matematik işlemleri için genelde aritmetik operatörler ya da aritmetik atama operatörleri kullanılır. Basit matematik işlemlerinin yanı sıra PHP, daha karmaşık matematiksel işlemleri yapmanızı sağlayan fonksiyonlara sahiptir.

Daha önce PHP'de Operatörler içeriğinde basit şekilde operatörler kullanılarak matematik işlemlerinin nasıl yapıldığını örneklendirmiştim. O yüzden burada sadece bir konu tekrarı yaparak, PHP'de matematiksel fonksiyonlara hızlıca geçeceğim.

Operatörler ile Matematik

Toplama İşlemi

Çıkarma İşlemi

Çarpma İşlemi

Bölme İşlemi

MOD Alma

Üs Hesaplama

Arttırma ve Azaltma

Fonksiyonlar ile Matematik

Yuvarlama Fonksiyonları

ceil()

floor()

round()

Mutlak Değer [abs()] Hesaplama

Karekök [sqrt()] Hesaplama

Üssü Hesaplama [pow()]

MOD Hesaplama [fmod()]

Tam Bölüm Hesaplama [intdiv()]

Hipotenüs Uzunluğu Hesaplama [hypot()]

Radyan ve Derece

rad2deg() - Radyanı Dereceye Çevir

deg2rad() - Dereceyi Radyana Çevir

Sinüs

sin() - Sinüs Hesaplama

sinh() - Hiperbolik Sinüs Hesaplama

asin() - Ark Sinüs Hesaplama

asinh() - Hiperbolik Ark Sinüs Hesaplama

Kosinüs

cos() - Kosinüs Hesaplama

cosh() - Hiperbolik Kosinüs Hesaplama

acos() - Ark Kosinüs Hesaplama

acosh() - Hiperbolik Ark Kosinüs Hesaplama

Tanjant

tan() - Tanjant Hesaplama

tanh() - Hiperbolik Tanjant Hesaplama

atan() - Ark Tanjant Hesaplama

atanh() - Hiperbolik Ark Tanjant Hesaplama

atan2() - Yay Ark Tanjantını Hesaplama

Logaritma

log() - Logaritma Hesaplama

log10() - 10 Tabanlı Logaritma Hesaplama

Sayı Sistemleri - Dönüştürme

bindec() - İkilik Sayı Sistemini Onluk Sayı Sistemine Dönüştürme

octdec() - Sekizlik Sayı Sistemini Onluk Sayı Sistemine Dönüştürme

hexdec() - Onaltılık Sayı Sistemini Onluk Sayı Sistemine Dönüştürme

decbin() - Onluk Sayı Sistemini İkilik Sayı Sistemine Dönüştürme

decoct() - Onluk Sayı Sistemini Sekizlik Sayı Sistemine Dönüştürme

dechex() - Onluk Sayı Sistemini Onaltılık Sayı Sistemine Dönüştürme

base_convert() - Sayı Sistemleri Arasında Dönüştürme

Matematiksel Sabitler

EULER Fonksiyonları

exp() - EULER Sayısının Üssünü Hesaplama

expm1() - EULER Sayısının Üssünün 1 Eksiğini Hesaplama

Sayısal İşlevler

number_format() - Sayı Formatlama / Biçimlendirme

min() - En Küçük Değeri Bulma

max() - En Büyük Değeri Bulma

lcg_value() - 0-1 Arasında Rasgele Bir Sayı Üretir

rand() - Rasgele Sayı Üretme

getrandmax() - rand() Fonksiyonunun Üretilebilecek En Büyük Sayı

mt_rand() - Mersenne Twister Algoritması ile Rasgele Sayı

mt_getrandmax() - mt_rand() Fonksiyonun Üretebileceği En Büyük Sayı

Operatörler ile Matematik

Toplama İşlemi

PHP'de toplama işlemi için + operatörü kullanılır.

echo 10 + 7; #Output : 17

Sayılar genelde bir değişken üzerinde tutulur. Değeri sayısal olan değişkenler yine aynı şekilde toplanır.

$x = 10;
$y = 7;
$sonuc = $x + $y;
echo $sonuc; #Output : 17

Bir de atamalı toplama ya da bir başka tabirle üzerine eklemek için kullanılan += operatörü vardır. Bu operatör değişkenin değeri ile belirlenen değeri toplar ve değişkene yeni değer olarak sonucu atar.

$x = 5;
$x += 2;
echo $x; #Output : 7

Çıkarma İşlemi

PHP'de çıkarma işlemi için - operatörü kullanılır.

$x = 12;
$y = 5;
echo $x - $y; #Output : 7

Atamalı çıkarma işlemi için -= operatörü kullanılır. Bu operatör değişkenin değerinden belirtilen değeri çıkarır ve sonucu değişkene atar.

$x = 15;
$x -= 12;
echo $x; #Output : 3

Çarpma İşlemi

PHP'de çarpma işlemi için * operatörü kullanılır.

$x = 3;
$y = 6;
echo $x * $y; #Output : 18

Atamalı çarpma işlemi için *= operatörü kullanılır. Bu operatör değişkenin değeri ile belirtilen değeri çarpar ve sonucu değişkene atar.

$x = 4;
$x *= 3;
echo $x; #Output: 12

Bölme İşlemi

PHP'de bölme işlemi için / operatörü kullanılır.

$x = 12;
$y = 3;
echo $x / $y; #Output: 4

Atamalı bölme işlemi için /= operatörü kullanılır. Bu operatör değişkenin değerini belirtilen değere böler ve sonucu değişkene atar.

$x = 15;
$x /= 3;
echo $x; #Output: 5

Not: Eğer sayı tam yani kalansız bölünmüyorsa; işlem sonucunun veri türü float yani ondalıklı sayı olacaktır.

echo 13 / 2; #Output: 6.5

Not: 0'a bölme işlemi yapılmaya çalışılırsa; bir ölümcül hataya neden olacaktır.

MOD Alma

PHP'de MOD alma yani bölümünden kalanı hesaplamak için % operatörü kullanılır.

echo 25 % 3; #Output: 1
echo 12 % 2; #Output: 0
echo 15 % 9; #Output: 6

PHP'de atamalı MOD alma işlemi %= operatörü ile yapılır. Değişkenin değerini belirtilen değere böler ve bölümden kalanı değişkene atar.

$x = 18;
$x %= 4;
echo $x; #Output: 2

ÜS Hesaplama

PHP 5.6 ile hayatımıza giren ve çoğu programla dilinde olmayan bir başka aritmetik operatör üs hesaplama operatörüdür. PHP'de üssü hesaplama işlemi ** operatörü ile yapılır.

echo 5 ** 3; #Output : 125

Yukarıdaki işlem (53) 5 üssü 3 hesaplamasını yapar.

Atamalı üs hesaplaması için **= operatörü kullanılır. Değişkenin değerinin, belirtilen değer kadar üssünü hesaplar ve sonucu değişkene atar.

$x = 12;
$x **= 4;
echo $x; #Output: 20736

Arttırma ve Eksiltme

PHP'de bir değişkenin değerini 1 arttırmak için arttırma (++) operatörü kullanılır.

$i = 5;
$i++;
echo $i; #Output: 6

PHP'de bir değişkenin değerini 1 eksiltmek için eksiltme (--) operatörü kullanılır.

$i = 5;
$i--;
echo $i; #Output: 4

Hem arttırma hem de eksiltme operatöründe, operatörlerin değişkenin önüne ya da arkasına gelmesi işlem önceliğini belirler.

Bu iki operatörü değişkenden sonra kullanırsanız; önce değişkenin değeri çağırılır sonrasında değeri arttırılır ya da eksiltilir.
Önce operatörü sonra değişkeni kullanırsanız; önce değişkenin değeri arttırılır sonra değişkenin değeri çağırılır.

//Önce değeri getir sonra arttır
$i = 5;
echo $i++; #Output: 5
echo $i; #Output: 6

//Önce arttır sonra değeri getir.
$i = 5;
echo ++$i; #Output: 6
echo $i; #Output: 6

//Önce değeri getir sonra eksilt
$i = 5;
echo $i--; #Output: 5
echo $i; #Output: 4

//Önce eksilt sonra değeri getir.
$i = 5;
echo --$i; #Output: 4
echo $i; #Output: 4

Pekiştirelim

Yukarıda anlattığım aritmetik operatörlerden çarpma ve üs alma operatörlerini kullanarak bir dairenin alanını hesaplayan bir fonksiyon yazalım.

function dairenin_alani($r)
{
if(!is_numeric($r)){
return "Lütfen sayısal bir değer belirtin.";
}
$pi = 3.14;
$sonuc = $pi * ($r ** 2);
return $sonuc;
}

echo dairenin_alani(10); #Output : 314

Bir tam sayının tek mi çift mi olduğunu söyleyen bir fonksiyonu MOD alma operatörünü kullanarak yazalım. Ama bu sefer tür dayatmasını kullanalım.

function tek_mi_cift_mi(int $sayi): string
{
if( ($sayi % 2) == 0 ){
return $sayi . " bir çift sayıdır.";
}
return $sayi . " bir tek sayıdır.";
}

Pekiştirme örneklerini inceledikten sonra bakmadan kendiniz de yazmaya çalışın.

Fonksiyonlar ile Matematik

PHP'de gelişmiş ve ileri düzey matematik işlemlerini kolayca gerçekleştirebilmenizi sağlayan ön tanımlı fonksiyonlar vardır. Burada bu fonksiyonları ve kullanımlarını anlatacağım.

Yuvarlama Fonksiyonları

PHP'de float türünde yani bir kayar noktalı (ondalıklı) sayıyı aşağı, yukarı ya da en yakın tam sayı değerine yuvarlamak için kullanılan üç fonksiyon vardır.

ceil()

Bir kayar noktalı (ondalıklı) sayıyı (float) yukarı yönlü olarak yuvarlar ve döndürür.

echo ceil(4.3); #Output: 5
echo ceil(9.999); #Output: 10
echo ceil(-3.14); #Output: -3

floor()

Bir kayar noktalı (ondalıklı) sayıyı (float) aşağı yönlü olarak yuvarlar ve döndürür.

echo floor(4.3); #Output: 4
echo floor(9.999); #Output: 9
echo floor(-3.14); #Output: -4

round()

Bir kayar noktalı (ondalıklı) sayıyı (float) en yakın olduğu tam sayıya yuvarlar ve döndürür.

Ondalık bölümü .5 ve üstü olan sayıyı yukarı yönlü yuvarlar.
Ondalık bölümü .5 altında olan sayıyı aşağı yönlü yuvarlar.

echo round(3.4); #Output: 3
echo round(3.49); #Output: 3
echo round(3.5); #Output: 4
echo round(3.6); #Output: 4

abs() Mutlak Değer Bulma

Herhangi bir sayının mutlak değerini bulmak için kullanılır.

echo abs(-4.2); #Output: 4.2
echo abs(5); #Output: 5
echo abs(-5); #Output: 5

sqrt() Karakök Alma

Herhangi bir sayının karekökünü hesaplamak için kullanılır.

echo sqrt(9); #Output: 3
echo sqrt(10); #Output: 3.16227766...

pow() Üs Hesaplama

Bir sayınının, ikinci parametre olarak verilen sayı kadar üssünü alır ve sonucu döndürür.

echo pow(2, 8); #Output: 256

Bu fonksiyon yerine ** operatörünü kullanmayı tercih edebilirsiniz.

fmod() MOD Hesaplama

Bir sayının, ikinci parametre olarak verilen sayıya bölümünden kalanını döndürür.

echo fmod(25, 3); #Output: 1
echo fmod(12, 2); #Output: 0
echo fmod(15, 9); #Output: 6

Bu fonksiyon yerine % operatörünü kullanmayı tercih edebilirsiniz.

intdiv() Kalansız Kaç Kez Bölünüyor

Bir sayının, ikinci parametre olarak verilen sayıya kaç kez tam yani kalansız bölündüğünü hesaplar ve döndürür.

echo intdiv(15, 5); #Output: 3
echo intdiv(15, 2); #Output: 7
echo intdiv(60, 10); #Output: 6

hypot() Hipotenüs Hesaplama

Bir dik açılı üçgenin hipotenüz kenar uzunluğunu hesaplar.

$xKenarUzunlugu = 4;
$yKenarUzunlugu = 6;

$hipotenus = hypot($xKenarUzunlugu, $yKenarUzunlugu);
echo $hipotenus; #Output: 7.211102550928

Radyan ve Derece

PHP'de radyan ve derece cinsinden değerleri birbirleri arasında dönüştürme işlemini yapabileceğiniz iki fonksiyona sahiptir.

rad2deg()

Radyan değerini derece cinsine dönüştürür.

// 1.5 radyan kaç derecedir?
echo rad2deg(1.5); #Output: 85.943669269623

deg2rad()

Derece değerini radyan cinsine dönüştürür.

// 85.943669269623 derece kaç radyandır?
echo deg2rad(85.943669269623); #Output: 1.5

Sinüs

sin()

Bir sayının sinüsünü hesaplayarak sonucu döndürür.

echo sin(deg2rad(60)); #Output: 0.86602540378444
echo sin(60); #Output: -0.30481062110222

sinh()

Bir sayının hiperbolik sinüsünü hesaplayarak sonucu döndürür.

echo sinh(8); #Output: 1490.4788257896

asin()

-1 ile 1 arasındaki ark sinüsünü radyan cinsinden hesaplar ve sonucu döndürür.

echo asin(0.2); #Output: 0.20135792079033
echo asin(-0.5); #Output: -0.5235987755983

asinh()

Herhangi bir sayının hiperbolik ark sinüsünü hesaplayarak sonucu döndürür.

echo asinh(5); #Output: 2.3124383412728

Kosinüs

cos()

Kosinüs hesaplaması yapar.

echo cos(3.1415926535898); #Output: -1

cosh()

Hiperbolik kosinüs hesaplaması yapar.

echo cosh(-1); #Output : 1.5430806348152
echo cosh(5.32); #Output : 102.19438737335

acos()

Radyan cinsinden ark kosinüs hesaplaması yapar.

echo acos(-1); #Output : 3.1415926535898
echo acos(-0.5); #Output : 2.0943951023932
echo acos(0.5); #Output : 1.0471975511966
echo acos(1); #Output : 0

acosh()

Hiperbolik ark kosinüs hesaplaması yapar.

echo acosh(1.1); #Output : 0.44356825438512
echo acosh(1); #Output : 0
echo acosh(3); #Output : 1.7627471740391

Tanjant

tan()

Tanjant hesaplaması yapar.

echo tan(1); #Output : 1.5574077246549
echo tan(0.8); #Output : 1.0296385570504
echo tan(5); #Output : -3.3805150062466

atan()

Ark tanjantı hesaplar ve radyan cinsinden sonucu döndürür.

echo atan(1); #Output : 0.78539816339745
echo atan(0.8); #Output : 0.67474094222355
echo atan(5); #Output : 1.373400766945

tanh()

Hiperbolik tanjantı hesaplar.

echo tanh(1); #Output : 0.76159415595576
echo tanh(0.8); #Output : 0.66403677026785
echo tanh(5); #Output : 0.9999092042626

atanh()

Hiperbolik ark tanjantı hesaplar.

echo atanh(-1); #Output : -INF
echo atanh(-0.99); #Output : -2.6466524123622
echo atanh(0.99); #Output : 2.6466524123622
echo atanh(1); #Output : INF

atan2()

İki değerin yay ark tanjantını hesaplar ve sonucu radyan cinsinden döner. Döndürdüğü değer -PI (-3,14...) ile PI (3,14...) arasındadır.

$deger = 2;
$bolen = 0.2;
echo atan2($deger, $bolen); #Output : 1.4711276743037

Logaritma

log()

Doğal logaritmasını bulur.

echo log(8); #Output : 2.0794415416798

log10()

Onluk tabana (base-10) göre logaritmasını bulur.

echo log10(8); #Output : 0.90308998699194

Sayı Sistemleri - Dönüştürme

PHP, bilgisayar ve programların kullandığı ikilik, sekizlik, ve onaltılık sayı sistemi ve insanların kullandığı onluk sayı sistemi arasında dönüştürme işlemi yapmak için kullanılan fonksiyonlara sahiptir.

Not : Bu konuda bilgi sahibi değilseniz daha önce yazdığım Programlama'da Bit İşlemleri başlıklı yazımdan temel mantık ve kuralları öğrenebilirsiniz.

bindec()

İkilik sayı sisteminden onluk sayı sistemine dönüştürür.

echo bindec("010110101101"); #Output : 1453

octdec()

Sekizlik sayı sisteminden onluk sayı sistemine dönüştürür.

echo octdec("2655"); #Output : 1453

hexdec()

Onaltılık sayı sisteminden onluk sayı sistemine dönüştürür.

echo hexdec("5AD"); #Output : 1453

decbin()

Onluk sayı sisteminden ikilik sayı sistemine dönüştürür.

echo decbin("2021"); #Output : 11111100101

decoct()

Onluk sayı sisteminden sekizlik sayı sistemine dönüştürür.

echo decoct("2021"); #Output : 3745

dechex()

Onluk sayı sisteminden onaltılık sayı sistemine dönüştürür.

echo dechex("2021"); #Output : 7E5

base_convert()

Bir sayı sistemindeki değeri başka bir sayı sistemine dönüştürmek için kullanılır.

İlk parametre olarak dönüştürülecek değeri,
İkinci parametre olarak dönüştürülecek değerin hangi sayı sistemine ait olduğunu,
Üçüncü parametre olarak hangi sayı sistemine dönüştürüleceğini alır.

//16'lık sayı sisteminden 10'luk sayı sistemine dönüştür.
echo base_convert("7E5", 16, 10); #Output : 2021

//10'luk sayı sisteminden 2'lik sayı sistemine dönüştür.
echo base_convert("2021", 10, 2); #Output : 011111100101

//8'lik sayı sisteminden 16 sayı sistemine dönüştür.
echo base_convert("3745", 8, 16); #Output : 7E5

Matematiksel Sabitler

PHP, matematik işlemlerinde kullanabileceğiniz bazı değerleri ön tanımlı olarak bir sabit şekilde sunar.

M_SQRT1_2 : 1/2'nin karekök değerini tutar.

M_SQRT2 : 2'nin karekök değerini tutar.

M_SQRT3 : 3'ün karekök değerini tutar.

M_LN2 : 2'nin doğal logaritmasını tutar.

M_LN10 : 10'un doğal logaritmasını tutar.

M_PI : PI için ön tanımlı bir değeri (3.1415926535898) tutar. Aynı zamanda pi() fonksiyonu da aynı değeri döndürür.

M_1_PI : 1/PI (Bir bölü Pi) sonucunu tutar.

M_2_PI : 2/PI (2 bölü Pi) sonucunu tutar.

M_PI_2 : PI/2 (Pi bölü 2) sonucunu tutar.

M_PI_4 : PI/4 (Pi bölü 4) sonucunu tutar.

M_SQRTPI : PI karekök değerini tutar.

M_2_SQRTPI : 2'nin PI'nin kareköküne bölüm sonucunu tutar.

M_LNPI : Pi sayısının doğal logaritma değerini tutar.

M_E : Euler sayısı (2.718281828459) değerini tutar.

M_EULER : Euler sabiti (0.57721566490153) değerini tutar.

M_LOG2E : Euler sayısının 2 tabanına göre logaritmik değerini tutar.

M_LOG10E : Euler sayısının 10 tabanına göre logaritmik değerini tutar.

EULER Fonksiyonları

exp()

Euler sayısının belirtilen sayı kadar üssünü hesaplamak için kullanılır.

/**
* M_E ** 4; #Result : 54.598150033144
* pow(M_E, 4); #Result : 54.598150033144
*/

echo exp(4); #Output : 54.598150033144

expm1()

Euler sayısının belirtilen sayı kadar üssünün 1 eksiğini bulur.

/**
* (M_E ** 4) - 1; #Result : 53.598150033144
* pow(M_E, 4) - 1; #Result : 53.598150033144
*/

echo expm1(4); #Output : 53.598150033144

Sayısal İşlevler

PHP sayısal bir değeri biçimlendirme ya da rastgele bir sayı üretmek gibi farklı işlemler için kullanabileceğiniz çeşitli ön tanımlı fonksiyonlara sahiptir.

number_format()

Bir sayıyı belirtilecek ayraçlar ile biçimlendirerek geri döndürür. Kullanımı bir sayının okunulabilirliğini arttırmak için ondalık ve binlik basamaklar arasına istenilen noktalama işaretlerini koymaktır.

$sayi = 1250500;
echo number_format($sayi); #Output : 1,250,500
echo number_format($sayi, 2); #Output : 1,250,500.00
echo number_format($sayi, 2, ".", ","); #Output : 1,250,500.00
echo number_format($sayi, 2, ",", "."); #Output : 1.250.500,00
echo number_format($sayi, 0, ",", "."); #Output : 1.250.500

$sayi = 15423.72;
echo number_format($sayi); #Output : 15,424
echo number_format($sayi, 1); #Output : 15,423.7
echo number_format($sayi, 2, ".", ","); #Output : 15,423.72
echo number_format($sayi, 3, ",", "."); #Output : 15.423,720
echo number_format($sayi, 0, ",", "."); #Output : 15.424

min()

Aldığı parametreler içerisinden ya da bir dizi içindeki en küçük değeri döndürür.

echo min(2, 3, 1, 6, 7); #Output: 1
echo min(array(2, 4, 5)); #Output: 2

max()

Aldığı parametreler içindeki ya da bir dizi içindeki en küçük değeri döndürür.

echo max(2, 3, 1, 6, 7); #Output: 7
echo max(array(2, 4, 5)); #Output: 5

Not : min() ve max() birer karşılaştırma fonksiyonudur ve aritmetik hesaplama dışında farklı alanlarda da kullanımı vardır. Ancak şuan bunlar konu dahilinde değildir.

lcg_value()

0-1 arasında rastgele bir float yani kayar noktalı (ondalıklı) sayı üretir.

echo lcg_value(); #OutputLooksLike: 0.78832204599987

rand()

Rastgele bir tam sayı üreterek döndürür.

echo rand(); #OutputLooksLike : 795091791

Belli sayılar arasında rastgele bir sayı üretmesi için;
Üretebileceği en düşük değeri ilk parametre,
Üretebileceği en yüksek değeri ise ikinci parametre olarak verebilirsiniz.

//Üreteceği sayı 100 ve üzeri olabilir.
echo rand(100);

//Üreteceği sayı 1'den 99'a kadar olabilir.
echo rand(1, 99);

getrandmax()

rand() fonksiyonunun üretebileceği maksimum değeri döndürür.

echo getrandmax(); #Output: 2147483647

mt_rand()

Mersenne Twister algoritmasını kullanarak rasgele bir tam sayı üretir.

echo mt_rand();

//Üreteceği sayı 1'den 99'a kadar olabilir.
echo mt_rand(1, 99);

mt_getrandmax()

Mersenne Twister algoritması kullanılarak üretilebilecek maksimum tam sayıyı döndürür.

echo mt_getrandmax(); #Output: 2147483647