Bütçe Hesaplama

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <style>
        #container{
            padding-right: 15px;
            padding-left: 15px;
            padding-top: 15px;
            margin-right: auto;
            margin-left: auto;
        }
        table td{
            margin: 20px;
        }

        input{
            cursor: pointer;
        }
        #info{
            color:#ff1121;
            font-weight: bold;
        }
        #education .color,#educationBar{
            background: #4986E7;
        }
        #environment .color,#environmentBar{
            background: #16A765;
        }
        #military .color,#militaryBar {
            background: #E9B330;
        }
        #health .color,#healthBar{
            background: #ff1121;
        }
        #crime .color,#crimeBar{
            background: #A076DD;
        }
        .meter{
            background: #555;
            -moz-border-radius: 10px;
            -webkit-border-radius: 10px;
            border-radius: 10px;
            padding: 5px;
        }
        .meter span {
            background: #eff151;
            border-radius: 5px;
            height: 10px;
            display: block;
        }
        .color{
            width: 25px;
            height: 25px;
            border: 1px #000000 solid;
            float: left;
        }
        .bar{
            width: 50px;
            float: left;
            border: 1px rgba(255, 255, 255, 0) solid;
            margin-left: 10px;
        }

        #chart{
            border: 1px #000000 solid;
            width: 325px;
            height: 250px;
            float: left;
            padding: 10px;
        }

    </style>
</head>
<body>
<div id="container">

    <div id="overAll">
        <table>
            <tr>
                <td style="width: 200px;"> <label>Toplam:  <span id="total"> 0%</span></label> </td>
                <td> : </td>
                <td style="width: 300px">
                    <div class="meter">
                        <span style="width: 0"></span>
                    </div>
                </td>
                <td id="info"> ! Bütçenizi Aşıyor </td>
            </tr>
        </table>
    </div>
    <br>
    <div style="width: 100%;float: left;margin-left: 0px">
        <div id="chart">
            <span id="educationBar" class="bar"></span>
            <span id="environmentBar" class="bar"></span>
            <span id="militaryBar" class="bar"></span>
            <span id="healthBar" class="bar"></span>
            <span id="crimeBar" class="bar"></span>
        </div>
    </div>
    <div id="division" style="float: left;margin-top: 2%">
        <table>
            <tr id="education">
                <td> <label>Eğitim:  <span> 0%</span></label> </td>
                <td><span class="color"></span> : </td>
                <td> <input type="range" min="0" max="100" value="0"/> </td>
            </tr>
            <tr id="environment">
                <td> <label>Çevre:  <span> 0%</span></label> </td>
                <td><span class="color"></span> : </td>
                <td> <input type="range" min="0" max="100" value="0"/> </td>
            </tr>
            <tr id="military">
                <td> <label>Güvenlik:  <span> 0%</span></label> </td>
                <td><span class="color"></span> : </td>
                <td> <input type="range" min="0" max="100" value="0"/> </td>
            </tr>
            <tr id="health">
                <td> <label>Sağlık:  <span> 0%</span></label> </td>
                <td><span class="color"></span> : </td>
                <td> <input type="range" min="0" max="100" value="0"/> </td>
            </tr>
            <tr id="crime">
                <td style="width: 200px;"> <label>Barınma:  <span> 0%</span></label> </td>
                <td><span class="color"></span> : </td>
                <td> <input type="range" min="0" max="100" value="0"/> </td>
            </tr>
        </table>
    </div>
</div>
<script>

    $(function(){

        $("#info").hide();
        var education,environment,military,health,crime;
        var total,chartValues;
        $("table").on("change mousemove",function(){
            education = $("#education").find("input").val();
            environment = $("#environment").find("input").val();
            military = $("#military").find("input").val();
            health = $("#health").find("input").val();
            crime = $("#crime").find("input").val();
            total=(Number(education/5)+Number(environment/5)+Number(military/5)+Number(health/5)+Number(crime/5));
            chartValues =[Number(education),Number(environment),Number(military),Number(health),Number(crime)];
            console.log(chartValues);
            valueUpdate();
        });
        function valueUpdate(){
            $("#education").find("label").find("span").text(education+"%");
            $("#environment").find("label").find("span").text(environment+"%");
            $("#military").find("label").find("span").text(military+"%");
            $("#health").find("label").find("span").text(health+"%");
            $("#crime").find("label").find("span").text(crime+"%");
            console.log(total);
            $("#educationBar").css({"height":education+"%"});
            //$("#educationBar").css({"height":education+"%","margin-top":education+"%"});
            $("#environmentBar").css({"height":environment+"%"});
            $("#militaryBar").css({"height":military+"%"});
            $("#healthBar").css({"height":health+"%"});
            $("#crimeBar").css({"height":crime+"%"});
            $("#overAll").find("progress").val(Math.ceil(total));
            $("#total").text(Math.ceil(total)+"%");
            $(".meter").find("span").width(Math.ceil(total)+"%");
            if(total>50){
                $("#info").show();
            }
            else{
                $("#info").hide();
            }
        }
    });
</script>
</body>
</html>

 

Kümeye Eleman Ekleme ve Alfabetik Sıralama

<?php 
class SimpleHeapSort extends SplHeap {
    public function compare($a, $b) {
        return strcmp($b,$a);
        //return strcmp($a,$b); yaparsanız tersten sıralar
    }
}	

$heap = new SimpleHeapSort();
$heap->insert("aa");
$heap->insert("cb");
$heap->insert("bb");

echo implode(PHP_EOL, iterator_to_array($heap));
?>

Çıktısı

aa bb cb

 

Hata Mesajı Açma ve Kapatma

Hata Mesajı Açma

Hata mesajlarını görmek ve çözmek her zaman daha iyidir. Onun için bu şekilde açabilirsiniz.

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>

Hata Mesajı Kapatma

Bazen yeterli test yapamadığımız zaman kullanıcıların hatalarla karşılaşmasını istemeyiz. Bunun için hataları kapatmamız gerekir.

<?php 
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(0);
?>

 

Json API oluşturma ve kullanımı

JSON (“Javascript Object Notation”), php ilen okunabilen bir veri biçimidir. Php’de bir diziden

<?php 
$dizi=array(1=>"elma",2=>"armut");
echo json_encode($dizi);
?>

örneğindeki gibi json_encode ile dönüştürülerek oluşturulur.

Çıktısı aşağıdaki gibidir.

{
  1: "elma",
  2: "armut"
}

Genelde API (“Application Programming Interface = Uygulama Programlama Arayüzü”)ler tarafından kullanılır.

Curl ile bağlanılan adreslerde alınan bu veriler json_decode ile geri dizi haline çevrilir.

<?php //Daha önceki verimiz
$dizi=array(1=>"elma",2=>"armut");
$API= json_encode($dizi);

//Nesne ve Çıktısı
$cikti=json_decode($API);
print_r($cikti);
//stdClass Object ( [1] => elma [2] => armut ) 


//Dizi ve Çıktısı
$cikti=json_decode($API,true);
print_r($cikti);
//Array ( [1] => elma [2] => armut )
?>

Mesela İstatistik API ile ilgili bir örnek verelim

<?php 
header('Content-Type: text/html; charset=utf-8');
function PhpStatistics(){
  $list=array("HTTP_HOST","REQUEST_URI","HTTP_CLIENT_IP","REMOTE_ADDR","HTTP_USER_AGENT","HTTP_ACCEPT_LANGUAGE");
  foreach($list as $l){$data[$l]=$_SERVER[$l];}
  $data=json_encode($data);
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_HEADER,false);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible;)");
  curl_setopt($ch,CURLOPT_URL,"http://phpstate.ulusanyazilim.com/developer/userinfo/api.php?".http_build_query(array('data'=>$data)));
  return curl_exec($ch);
}
$json=PhpStatistics();
$dizi=json_decode($json);

print_r($dizi);

echo $tarayici=$dizi["agent_name"]."<br>";
echo $ip_adresi=$dizi["http_client_ip"];

?>

Diziyi İstenilen Parçaya Bölmek

Dizileri belirlenen sayıda bölümlere ayırır.

<?php
$dizi = array("bir","iki","üç","dört","beş");
$bolunme=array_chunk($dizi, 2);
$anahtar_korumali_bolunme=array_chunk($dizi, 2, true);
?>

<?php print_r($bolunme); ?>
Çıktısı:
Array
(
[0] => Array
(
[0] => bir
[1] => iki
)

[1] => Array
(
[0] => üç
[1] => dört
)

[2] => Array
(
[0] => beş
)

)
<?php print_r($anahtar_korumali_bolunme); ?>
Çıktısı:
Array
(
[0] => Array
(
[0] => bir
[1] => iki
)

[1] => Array
(
[2] => üç
[3] => dört
)

[2] => Array
(
[4] => beş
)

)

 

Dizilerde Anahtar ve Veri Oluşturma

array_fill Kullanımı
Dizi oluşturarak içeriğini belirtilen değer olarak girer.
array_fill($indis_baslangici, $kac_elemanli, $girilecek_deger);

<?php
$a = array_fill(2, 5, 'elma');
print_r($a);
?>
Çıktısı
Array
(
[2] => elma
[3] => elma
[4] => elma
[5] => elma
[6] => elma
)

array_fill_keys Kullanımı
Belirtilen anahtarları oluşturup belirlenen verileri girer.
array_fill_keys($anahtarlar_dizisi, $deger);

<?php
$anahtarlar = array('mevye', 3, 8, 'bitki');
$a = array_fill_keys($anahtarlar, 'elma');
print_r($a);
?>
Çıktısı
Array
(
[mevye] => elma
[3] => elma
[8] => elma
[bitki] => elma
)

 

Karmaşık Dizilerin Elemanlarını Sıralama

array_multisort Kullanımı
Karmaşık veya çoklu dizileri sıralamakta kullanılır.
1-Basit Kullanım
array_multisort($dizi);
2-Gelişmiş Kullanım
array_multisort($dizi1, $siralama_baslangici1, $siralama_tipi1,
$dizi2, $siralama_baslangici2, $siralama_tipi2);

Sıralama başlangıcı değerleri olarak aşağıdakiler kullanılabilir:
SORT_ASC (artan sıralama), SORT_DESC (azalan sıralama),
Sıralama tipi değerleri olarak aşağıdakiler kullanılabilir:
SORT_REGULAR (normal), SORT_NUMERIC (sayısal), SORT_STRING (dizgesel).

<?php
//Basit Kullanım Örnek
$dizi = array(1,4,2,3);
array_multisort($dizi);

print_r($dizi);
?>
Çıktısı
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
<?php
//Gelişmiş Kullanım
$dizi1=array("a",2,"z","3",8);
$dizi2=array(4,"k","2",3,1);
array_multisort($dizi1, SORT_ASC, SORT_STRING,
                $dizi2, SORT_NUMERIC, SORT_DESC);
?>

<?php print_r($dizi1); ?>
Çıktısı
Array
(
    [0] => 2
    [1] => 3
    [2] => 8
    [3] => a
    [4] => z
)
<?php print_r($dizi2); ?>
Çıktısı
Array
(
    [0] => k
    [1] => 3
    [2] => 1
    [3] => 4
    [4] => 2
)

 

Dizi Eleman Sayısını Yükselterek Veri Eklemek

array_pad Kullanımı
array_pad($dizi,$kac_elemanli_olacak,$eksik_elemanlar_yerine_ne_gelecek)
$eksik_elemanlar değeri pozitif ise sonuna negatif ise başına ekler.

<?php 
$dizi = array(1,2,3);

$sonuc = array_pad($dizi,10,4);
print_r($sonuc);
//dizimize 10 elemanlı sonuna 4 ekleme işlemi
// Çıktısı: array(1,2,3,4,4,4,4,4,4,4)

$sonuc = array_pad($dizi, -7, "dört");
print_r($sonuc);
//dizimize 7 elemanlı başına "dört" ekleme işlemi
// Çıktısı: array("dört","dört","dört","dört",1,2,3)

$sonuc = array_pad($dizi, 2, 4);
print_r($sonuc);
//dizimiz 2 elemandan büyük olduğu için değişiklik olmaz.
// Çıktısı: array(1,2,3)
?>