Php Dizilerden Array_map Kullanılarak Oluşturulmuş Bir Hesap Makinesi Örneği Yazalım

06/07/2024, 11:31

fikretyn

PHP Kod:
<!DOCTYPE html>
<
html>
<
head>
    <title>PHP Hesap Makinesi</title>
</
head>
<
body>

<!-- 
HTML formu kullanıcıdan iki dizi ve bir işlem türü almak için -->
<
form method="post">
    Dizi 1: <input type="text" name="array1" placeholder="Örnek: 10,20,30,40"><br>
    Dizi 2: <input type="text" name="array2" placeholder="Örnek: 2,4,6,8"><br>
    İşlem
    <select name="operation">
        <option value="add">Toplama</option>
        <option value="subtract">Çıkarma</option>
        <option value="multiply">Çarpma</option>
        <option value="divide">Bölme</option>
    </select><br>
    <input type="submit" value="Hesapla">
</
form>

<?
php
// Formun gönderilip gönderilmediğini kontrol eder
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Kullanıcıdan gelen verileri alır
    $array1 explode(','$_POST['array1']); // Dizi 1'i virgülle ayrılmış stringten diziye dönüştürür
    $array2 explode(','$_POST['array2']); // Dizi 2'yi virgülle ayrılmış stringten diziye dönüştürür
    $operation $_POST['operation']; // Seçilen işlemi alır

    // Dizileri integer'a çevir
    $array1 array_map('intval'$array1);
    $array2 array_map('intval'$array2);

    // Hesap makinesi fonksiyonları
    function add($a$b) {
        return $a $b;
    }

    function subtract($a$b) {
        return $a $b;
    }

    function multiply($a$b) {
        return $a $b;
    }

    function divide($a$b) {
        if ($b == 0) {
            return "Division by zero error!";
        }
        return $a $b;
    }

    // İlgili fonksiyonu seç ve array_map ile uygula
    switch ($operation) {
        case 'add':
            $result array_map('add'$array1$array2);
            break;
        case 'subtract':
            $result array_map('subtract'$array1$array2);
            break;
        case 'multiply':
            $result array_map('multiply'$array1$array2);
            break;
        case 'divide':
            $result array_map('divide'$array1$array2);
            break;
        default:
            $result "Invalid operation!";
    }

    // Sonucu yazdır
    if (is_array($result)) {
        echo "Sonuç: " implode(", "$result); // Dizi sonucunu virgülle ayrılmış string olarak yazdırır
    } else {
        echo $result// Hata mesajını yazdırır
    }
}
?>

</body>
</html> 

Açıklamalar

HTML Formu
<!DOCTYPE html>
<html>
<head>
    <title>PHP Hesap Makinesi</title>
</head>
<body>

<form method="post">
    Dizi 1: <input type="text" name="array1" placeholder="Örnek: 10,20,30,40"><br>
    Dizi 2: <input type="text" name="array2" placeholder="Örnek: 2,4,6,8"><br>
    İşlem:
    <select name="operation">
        <option value="add">Toplama</option>
        <option value="subtract">Çıkarma</option>
        <option value="multiply">Çarpma</option>
        <option value="divide">Bölme</option>
    </select><br>
    <input type="submit" value="Hesapla">
</form>
[*]Bu bölümde, kullanıcıdan iki dizi ve bir işlem türü almak için bir Html formu oluşturulmuştur.  
[*]method="post" ifadesi, formun gönderim yönteminin POST olduğunu belirtir.  input elemanları, kullanıcıdan  array1,  array2 ve  operation değerlerini alır.  select elemanı, kullanıcıya dört farklı işlem seçeneği sunar.  submit butonu, formun gönderilmesini sağlar.

PHP Kodu
PHP Kod:
<?php
// Formun gönderilip gönderilmediğini kontrol eder
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
Bu satır, formun POST yöntemiyle gönderilip gönderilmediğini kontrol eder. Eğer gönderilmişse, form verilerini işleme başlar.

PHP Kod:
    // Kullanıcıdan gelen verileri alır
    $array1 explode(','$_POST['array1']); // Dizi 1'i virgülle ayrılmış stringten diziye dönüştürür
    $array2 explode(','$_POST['array2']); // Dizi 2'yi virgülle ayrılmış stringten diziye dönüştürür
    $operation $_POST['operation']; // Seçilen işlemi alır 
[*]Kullanıcıdan gelen
array1 ve  array2 değerleri virgülle ayrılmış stringlerdir. explode(',', $_POST['array1'])  ifadesi, bu stringleri virgüllere göre ayırarak bir diziye dönüştürür.  $_POST['operation'] ifadesi, seçilen işlemi alır.

PHP Kod:
    // Dizileri integer'a çevir
    $array1 array_map('intval'$array1);
    $array2 array_map('intval'$array2); 
  array_map('intval', $array1)  ifadesi,  array1 dizisindeki tüm elemanları tamsayıya çevirir.  Aynı işlem array2 dizisi için de yapılır.


Hesap Makinesi Fonksiyonları
PHP Kod:
    function add($a$b) {
        return $a $b;
    }

    function subtract($a$b) {
        return $a $b;
    }

    function multiply($a$b) {
        return $a $b;
    }

    function divide($a$b) {
        if ($b == 0) {
            return "Division by zero error!";
        }
        return $a $b;
    
[*]Bu fonksiyonlar, toplama, çıkarma, çarpma ve bölme işlemlerini gerçekleştiren basit matematiksel fonksiyonlardır. divide
fonksiyonu, bölme işlemi sırasında sıfıra bölme hatasını kontrol eder ve bu durumda bir hata mesajı döndürür.

İşlemi Seç ve Uygula
PHP Kod:
    // İlgili fonksiyonu seç ve array_map ile uygula
    switch ($operation) {
        case 'add':
            $result array_map('add'$array1$array2);
            break;
        case 'subtract':
            $result array_map('subtract'$array1$array2);
            break;
        case 'multiply':
            $result array_map('multiply'$array1$array2);
            break;
        case 'divide':
            $result array_map('divide'$array1$array2);
            break;
        default:
            $result "Invalid operation!";
    
  • Kullanıcının seçtiği işleme göre, uygun fonksiyon
    array_map ile iki diziye uygulanır. array_map('function_name', $array1, $array2) ifadesi, function_name fonksiyonunu array1 ve array2 dizilerinin elemanları üzerinde sırayla uygular.


Sonucu Yazdır
PHP Kod:
    // Sonucu yazdır
    if (is_array($result)) {
        echo "Sonuç: " implode(", "$result); // Dizi sonucunu virgülle ayrılmış string olarak yazdırır
    } else {
        echo $result// Hata mesajını yazdırır
    }
}
?>

is_array($result) 
ifadesi, result değişkeninin bir dizi olup olmadığını kontrol eder.  Eğer resultbir dizi ise,  implode(", ", $result)  ifadesi diziyi virgülle ayrılmış bir stringe dönüştürerek sonucu ekrana yazdırır. Eğer result bir dizi değilse (örneğin, bir hata mesajı ise), doğrudan yazdırılır.
06/07/2024, 12:33

onur_can

Paylaşımınız için teşekkürler...