php

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.
© copyright 2005 - 2026