php

entry139 galeri
    106.
  1. Sınırsız sayıda iç içe array olduğunu varsayalım Örnek şöyle uzayan giden bir array:

    $langs = [
    'en' => [
    'Evet' => 'Yes',
    'Hayir' => 'No',
    'undef' => [
    'Ho!' => 'Undo',
    'Zo!' => 'UnZo',
    'E Oha' => [
    'Hmm' => 'Ok'
    ]
    ]
    ],
    'fr' => [
    'Evet' => 'Qui',
    'Hayir' => 'Non'
    ]
    ];

    Bu arrayin en olan keyindeki undef keyinde bulunan E Oha key'ini itere etmek çok zor. Sürekli bir iç içe foreach gerekiyor. En basitinden E Oha'nın sadece kendisini alan altındaki değerleri almayan bir sınıf yazdığımızı düşünelim:

    class Translator {
    public static function DoTranslate(array $lang_arr) {
    foreach ($lang_arr as $key => $value) {
    $s = $lang_arr[$key];
    foreach ($s as $skey => $svalue) {
    if (!is_array($svalue)) {
    echo "$skey -- $svalue<br/>";
    }
    else {
    foreach ($svalue as $ikey => $ivalue) {
    echo "$ikey -- $ivalue<br/>";
    }
    }
    }
    }
    }
    }

    Bu sınıfta önce ilk array ile ilk değerler alınıyor. Sonra diğerleri.

    var_dump(Translator::DoTranslate($langs));
    die();

    ile çıkan değere bakabiliriz:

    Evet -- Yes
    Hayir -- No
    undef ===> Ho! -- Undo
    undef ===> Zo! -- UnZo
    undef ===> E Oha - Array
    Evet -- Qui
    Hayir -- Non

    3. undef çıktısındaki E Oha'nın Array çıktısını otomatiğe bağlamak gerekiyor. Çözüm yolu gerekiyor bunun için.

    Kodlara güzelce bakmak isteyen için Ubuntu Paste: http://paste.ubuntu.com/15112181/

    iç içe arrayleri çözmek gerçekten geliyor.
    0 ...