Verilerinizi organize kolay yolu böyle bir şekilde olacaktır:
array (
'Animal' =>
array (
'Kaplumbağa' =>
array (
'Sea Kaplumbağa',
'Box Kaplumbağa',
'Green Kaplumbağa' =>
array (
'Green Kaplumbağa With Brown Tail',
),
'Common Kaplumbağa',
),
),
);
// Or, otherwise written (equivalent to the above)
$animals = array();
$animals['Animal'] = array();
$animals['Animal']['Kaplumbağa'] = array();
$animals['Animal']['Kaplumbağa'][] = 'Sea Kaplumbağa';
$animals['Animal']['Kaplumbağa'][] = 'Box Kaplumbağa';
$animals['Animal']['Kaplumbağa']['Green Kaplumbağa'] = array();
$animals['Animal']['Kaplumbağa']['Green Kaplumbağa'][] = 'Green Kaplumbağa With Brown Tail';
$animals['Animal']['Kaplumbağa'][] = 'Common Kaplumbağa';
Esasen, hayvanın ismi çocuk sürece, değer bir dizidir ve anahtar hayvan adım, değerdir.
Bu şekilde, kolayca aşağıdakileri yaparak değerleri ayrıştırmak:
parse_animals($animals);
function parse_animals($array, $indent = 0) {
if(!is_array($array)) return; // A little safe guard in case.
foreach($array as $key => $value) {
echo str_repeat(' ', $indent) . "- ";
if(is_array($value)) {
echo $key . "\n";
parse_animals($value, $indent + 1);
} else {
echo $value . "\n";
}
}
}
Konsolunda yukarıdaki çıktı şu olacaktır:
- Animal
- Kaplumbağa
- Sea Kaplumbağa
- Box Kaplumbağa
- Green Kaplumbağa
- Green Kaplumbağa With Brown Tail
- Common Kaplumbağa
EDIT: Ve burada bir sürüm olduğunu olacak bir web sayfası için çıktı o.
function parse_animals_web($array) {
if(!is_array($array)) return; // A little safe guard in case.
foreach($array as $key => $value) {
echo '<ul>';
if(is_array($value)) {
echo '<li>' . htmlentities($key) . "</li>";
parse_animals_web($value);
} else {
echo '<li>' . htmlentities($value) . "</li>";
}
echo '</ul>';
}
}
Çıktısı:
- Animal
- Kaplumbağa
- Sea Kaplumbağa
- Box Kaplumbağa
- Green Kaplumbağa
- Green Kaplumbağa With Brown Tail
- Common Kaplumbağa
Belki bir hayvanın çocukları almak istiyorum.
function get_children_of($array, $name) {
foreach($array as $key => $value) {
if(is_array($value)) {
if($key === $name) {
return $value;
} else {
return get_children_of($value, $name);
}
}
}
return array();
}
Şimdi tüm Green Kaplumbağa
çocukları ve çıkış onları alabilirsiniz.
$green_turtle = get_children_of($animals, 'Green Kaplumbağa');
parse_array($green_turtle);
Çıktısı:
- Green Kaplumbağa With Brown Tail
Eğer giriş dizi garip biçimde olmak sıkışmış olduğunu söylüyor beri EDIT:, burada yukarıda belirtilen biçime dizi dönüştürmek bir fonksiyonudur:
function convert_array($array) {
$new_array = array();
$keys = array_keys($array);
foreach($keys as $key) {
$level = explode('-', $key);
$cur_level = &$new_array;
$cur_key = '';
foreach($level as $o_key) {
$cur_key = ltrim($cur_key . '-' . $o_key, '-');
$next_key = $cur_key . '-1';
$value = $array[$cur_key];
$has_child = array_key_exists($next_key, $array);
if($has_child) {
if(!array_key_exists($value, $cur_level)) {
$cur_level[$value] = array();
}
$cur_level = &$cur_level[$value];
} else {
$cur_level[] = $value;
}
}
}
return $new_array;
}