• 17-02-2018, 11:31:52
    #1
    Merhaba arkadaşlar bir noktada takıldım yardımınıza ihtiyaç duydum.
    Şu şekilde bir veri dönüyor;
    {"2":{"3":[],"4":[]},"6":{"7":[],"8":[]},"9":{"10":[],"31":[]},"15":{"22":[],"23":[]},"16":{"18":[]},"19":{"20":[],"21":[]},"26":{"28":{"39":[]}},"30":{"5":[],"32":[]},"33":{"34":[],"35":[],"36":[]}}
    Yapmak istediğim şu:
    2 nolu değerin alt değerleri : 3 ve 4. Bunu (2,3,4) şeklinde bir forma sokmam gerekiyor.
    Örneğin 26 nolu değerin alt değeri : 28. Bu değerinde bir alt değeri var: 39. Bunlarıda aynı şekilde : (26,28,39) şekilde bir forma sokmam gerekiyor. Nasıl yapabilirim.
  • 17-02-2018, 11:53:19
    #2
    Kod mu istiyorsunuz algoritma mı belirtmemişsiniz, php bilmiyorum ancak algoritmik olarak yardım edebilirm. Java'da aynı durum ile karşılaşsaydım, bütün bir JSONArray yada JSONObject için while döngüsü içerisinde key değer null olmadığı sürece bu while döngüsünün içerisindeki bir başka while döngüsü içerisinde dışardaki key'i içeridekine eşitlerim ve içeride bu eşitleme yine key değeri null olana kadar devam eder.
    İçeride aynı zamanda eşitlemeyi yapmadan önce önceki key değerini diziye kayıt edersiniz ve içerideki while döngüsünün çıkışında bu diziyi istediğiniz yere kayıt edip sıfırlarsınız. Umarım yardımcı olmuştur. İyi çalışmalar.
  • 17-02-2018, 14:51:51
    #3
    istemis oldugun olayi altta verdigim fonksiyon ile cozebilirsin fakat burada ne yapmak istediginde onemli,
    dizi yapisini hep bu sekilde dondugunu varsayarsak bunu kullanabilirsin.

    <?php
    
    $json = '{"2":{"3":[],"4":[]},"6":{"7":[],"8":[]},"9":{"10":[],"31":[]},"15":{"22":[],"23":[]},"16":{"18":[]},"19":{"20":[],"21":[]},"26":{"28":{"39":[]}},"30":{"5":[],"32":[]},"33":{"34":[],"35":[],"36":[]}}';
    $json = json_decode($json, true);
    
    function recursive($datas)
    {
        $rec = true;
        foreach ($datas as $id => $data) {
            echo $id . ',';
            if ($data) {
                recursive($data);
            } else {
                $rec = false;
            }
        }
        if (!$rec) {
            echo '<br />' . "\n";
        }
    }
    
    recursive($json);