Bir dizi olmadan bir php anahtar-değer çifti bir örneğini oluşturma

3 Cevap php

Ben çok boyutlu bir dizi oluşturmak için bir özyinelemeli işlev yazıyorum. Aşağıdaki gibi Temelde, sorun:

function build($term){  	
    $children = array();

    foreach ( $term->children() as $child ) {
        $children[] = build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return $term->text() => $children; //obviously, this doesn't work   		
    }
}

Düşünceler? Ben o iş yapmak için fonksiyon yapısını yeniden biliyorum, ama bu gereksiz olması gerektiği gibi görünüyor.

3 Cevap

Bir dizi PHP sunabileceği tek anahtar-değer çifti konteyner. Yani size işlevi istiyorsanız bir anahtar-değer çifti dönmek için (özyinelemeli ya da olmayabilir) bir dizi kullanmak zorunda.

return array($term->text() => $children);
function build($term){          
    $children = array();

    foreach ( $term->children() as $child ) {
        $children += build($child);
    }

    if(!count($children)){
        return $term->text();
    } else {
        return array($term->text() => $children); //obviously, this doesn't work               
    }
}

I sorunun ne anlamak bu bu gibi görünmelidir şeydir.

Özyineleme ekleme ve bir dizi dönen.

Edit: sayısı ($ çocuk) == 0, bu satır içi senin türleri alacağı bile bir kenara gibi bir dizi dönen daha iyi olabilir. Başka satır aşağı hataları her türlü alabilirsiniz:

if(!count($children)){
            return array($term->text() => null);

Bu gibi dönüş olabilir:

return array($term->text() => $children);

Bu ne istedi olmamasına rağmen. Seni, senin fonksiyonun parçaları yeniden olmadan bir yol veya başka bunu yapamaz düşünüyorum.