سؤال

أنا أكتب وظيفة عودية لبناء صفيف متعدد الأبعاد. في الأساس ، المشكلة هي كما يلي:

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           
    }
}

أفكار؟ أعلم أنه يمكنني إعادة كتابة بنية الوظيفة لجعلها تعمل ، لكن يبدو أن ذلك يجب أن يكون غير ضروري.

هل كانت مفيدة؟

المحلول

المصفوفة هي حاوية الزوجة ذات القيمة الرئيسية الوحيدة التي يقدمها PHP. لذلك عليك استخدام صفيف إذا كنت تريد وظيفتك (قد تكون متكررة أم لا) لإرجاع زوج القيمة الرئيسية.

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               
    }
}

من ما أفهمه للسؤال ، هذا ما ينبغي أن يبدو عليه.

إلحاق العودة وإعادة صفيف.

تحرير: جانباً ، قد تكون أفضل حالًا في إرجاع صفيف حتى لو العد ($ أطفال) == 0 ، فإن هذا سيحصل على جميع الأنواع الخاصة بك. وإلا يمكنك الحصول على كل أنواع الأخطاء أسفل الخط:

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

يمكنك إعادتها مثل هذا:

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

على الرغم من أنه ليس ما طلبته. أعتقد أنه لا يمكنك القيام بذلك دون إعادة كتابة أجزاء من وظيفتك ، بطريقة أو بأخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top