• 23-03-2020, 11:47:19
    #1
    Arkadaşlar bu işte yeniyim... Bir noktada takıldım çözemiyorum saatlerdir...
    JSON'dan şöyle bir veri geliyor...
    "place":"269km NNW of Farallon de Pajaros
    Ben bu ifadenin "of" kelimesinden önceki kısmını göstermek istemiyorum. Onu aşağıda kodların tamamını paylaştığım dosyanın $deprem->yer kısmında çözdüm. Ama JSON bazen veriyi bu "of" kelimesi olmadan gönderiyor. Şu şekilde yani;
    "place":"Central East Pacific
    O zaman da aynen yazdırmak istiyorum. Nasıl yapabilirim?

    Kısacası;
    "place":"269km NNW of Farallon de Pajaros
    geldiğinde Farallon de Pajaros olanı çekmek
    "place":"Central East Pacific
    olarak geldiğinde ise Central East Pacific olarak çekmek istiyorum.

    Güncel kod bu şekilde;
    <?php
    echo "<pre>
    .................DÜNYADAKİ SON DEPREMLER....................
    Büyüklük
    Tarih Saat Enlem(N) Boylam(E) Derinlik(km) MD ML Mw Yer Çözüm Niteliği
    ---------- -------- -------- ------- ---------- ------------ -------------- --------------
    ";
    
    class Deprem {
    public $siddet;
        public $tarih;
        public $saat;
        public $enlem;
        public $boylam;
        public $derinlik;
        public $yer;
    }
    
    function eng2tr($str)
    {
    $from_arr=array("ç", "Ç", "ğ", "Ğ", "ı", "İ", "ö", "Ö", "ü", "Ü", "ş", "Ş");
    $to_arr=array("c", "C", "ğ", "Ğ", "i", "I", "o", "O", "u", "U", "s", "S");
    
    return strtoupper(str_replace($from_arr, $to_arr, $str));
    }
    
    $site = file_get_contents("https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.geojson");
    
    
    $depremler = array();
    
    $data = json_decode ($site,JSON_UNESCAPED_UNICODE);
    
    
    $i = 0;
    foreach ($data ["features"] as $value) {
        $deprem = new Deprem();
    $deprem->siddet = $value["properties"]["mag"];
    $bilgiler = explode(" ", date('d.m.Y H:i:s', (($value["properties"]["time"])/1000)));
    $deprem->tarih = $bilgiler[0];
    $deprem->saat = $bilgiler[1];
    $deprem->boylam = $value["geometry"]["coordinates"][0];
    $deprem->enlem = $value["geometry"]["coordinates"][1];
    $deprem->derinlik = $value["geometry"]["coordinates"][2];
    $deprem->yer = strtoupper(explode("of",$value["properties"]["place"])[1]);
    
    $depremler[$i++] = $deprem;
    }
    
    
    // arsort($depremler);
    foreach ($depremler as &$deprem){
    echo "".$deprem->tarih." "; // tarih
    echo "".$deprem->saat." "; // saat
    echo "".$deprem->enlem." "; // enlem
    echo "".$deprem->boylam." "; // boylam
    echo "".$deprem->derinlik." "; // derinlik
    echo "-.- "; // MD
    echo "".$deprem->siddet." "; // deprem şiddeti
    echo "-.- "; // MW
    echo ""; // BOŞLUK
    echo "".$deprem->yer." "; // yer
    echo " İlksel
    "; // BOŞLUK
    }
    echo "
    </pre>";
    
    ?>
  • 23-03-2020, 11:56:08
    #2
    if içeriyorsa of içermiyorsa of
    • VSaBaH
    VSaBaH bunu beğendi.
    1 kişi bunu beğendi.
  • 23-03-2020, 11:58:06
    #4
    $depremler[$i++] = $deprem;

    satırından önce if ile gelen değerde of aratıp olup olmadığına bakın varsa su şekilde yoksa tamamını göster diyin.
  • 23-03-2020, 11:58:23
    #5
    $locationControl = explode("of", $gelenverinindegiskeni);

    if($locationControl[1]){
    $deprem->yer = $locationControl[1];
    }else{
    $deprem->yer = $locationControl[0];
    }

    Şu şekilde düzenleyip dener misiniz? Mobil olduğum için deneyemedim ancak en kolay mantık bu şekilde.
  • 23-03-2020, 12:06:49
    #6
    MuhammetDemirel adlı üyeden alıntı: mesajı görüntüle
    $locationControl = explode("of", $gelenverinindegiskeni);

    if($locationControl[1]){
    $deprem->yer = $locationControl[1];
    }else{
    $deprem->yer = $locationControl[0];
    }

    Şu şekilde düzenleyip dener misiniz? Mobil olduğum için deneyemedim ancak en kolay mantık bu şekilde.
    Üstat büyüksün bu işe yaradı teşekkürler!
    Cevap veren diğer dostlara da sonsuz teşekkürler. İyi ki varsınız
  • 23-03-2020, 13:43:08
    #7
    Sorun çözülmüş ama index yerine end fonksiyonu daha pratik bir çözüm olacaktır. Of kelimesinden böldükten sonra son öğeyi yazdırın. İndex ve if'e ihtiyaç duymadan yapmış olacaksınız. Zorunlu olmadıkça programlamada if'lere bulaşmamak ileride geliştirme yaparken fayda sağlar.
  • 23-03-2020, 13:44:43
    #8
    MUluc adlı üyeden alıntı: mesajı görüntüle
    Sorun çözülmüş ama index yerine end fonksiyonu daha pratik bir çözüm olacaktır. Of kelimesinden böldükten sonra son öğeyi yazdırın. İndex ve if'e ihtiyaç duymadan yapmış olacaksınız. Zorunlu olmadıkça programlamada if'lere bulaşmamak ileride geliştirme yaparken fayda sağlar.
    Öneriniz için teşekkürler çalışayım üstünde