گرفتن زیرمجموعه های شناسه یک آرایه از کل آرایه به صورت تو در تو

۶ ماه پیش(به روز شده در ۶ ماه پیش) پی اچ پی(PHP)(توابع) ۰

مدتی قبل برای گروه ما در یکی از پروژه ها به تابعی نیاز شد که هر چند جز کدهای ساده ایست اما کارهای بزرگی انجام میدهد. تابع زیر تمامی زیرمجموعه های یک شناسه بصورت تو در تو رو را شناسایی میکند. برای درک بهتر فرض کنید آرایه ای به شکل زیر دارید:

$arr = array(
 1 => null,
 2 => 1,
 3 => 2,
 4 => 3,
 5 => 3);

و میخواهید تمام زیرمجموع های وابسته به مثلا شناسه 1 را پیدا کنید یعنی در آرایه بالا ما به دنبال نتیجه زیر هستیم: 

1 -> 2, 3, 4, 5
2 -> 3, 4, 5
3 -> 4, 5
4 -> 
5 ->

 تابع زیر دقیقا درخواست ما را پاسخ میدهد. این مثال ساده ای بود و مثلا میتوان تمامی زیرمجموعه های یک کاربر تا تو در تو ترین حالت را بدست آورد. یعنی تابع را به مراحل بالاتری بسط داد.

function allSubsets($arr) {
    $result = array();
 
    foreach ($arr as $key => $value) {
        if ($value) {
            $result[$value][] = $key;
            $tmpResult = $result;
            foreach ($tmpResult as $index => $list) {
                if ($index >= $key) {
                    break;
                }
 
                foreach ($list as $i => $j) {
                    if ($value == $j) {
                        $result[$index][] = $key;
                    }
                }
            }
        }
    }
 
    return $result;
}

مثال:

$arr = array(
    1 => null,
    2 => 1,
    3 => 2,
    4 => 3,
    5 => 3);
 
print_r(allSubsets($arr));

نتیجه:

Array
(
    [1] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 4
            [3] => 5
        )

    [2] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 5
        )

    [3] => Array
        (
            [0] => 4
            [1] => 5
        )
)

صفحات پیشنهادی

فراخوانی فایلهای پیکربندی ini با تابع ()parse_ini_file...

تابع ()parse_ini_file جهت پردازش و فراخوانی متغیرهای درونی فایلهای پیکربندی ini بکار می رود. در وب سایتهای تخصصی همواره قرار دادن متغیرهای سراسری در فایلهای php جالب نیست و معقول خواهد بود تا متغیرهای...

تابع subwords - نمایش بخشی از کلمه های یک رشته...

در php تابعی بعنوان substr برای نمایش یک رشته وجود دارد. اینبار تابعی را معرفی می کنیم که بخشی از کلمات یک رشته را با توجه به تعداد مشخص شده ورودی بر می گرداند. مزیت این تابع این است که از رشته های یو...

تابع ()ceil در php...

تابع ()ceil عدد ورودی را به بزرگترین عدد صحیح گرد می کند. برای فهم بیشتر از کاربرد تابع ، مثالهای زیر را ببینید......

تابع کنترل اطلاعات ورودی برای جلوگیری از تزریق به پایگاه داده...

ورودی‌ها همیشه باید کنترل شوند تا از خطراتی نظیر SQL Injection در امان بود. یک روش ساده و قوی برای این کار وجود دارد که خود وب سایت PHP آنرا توصیه نموده است. هر چند که شما می ...

نظر

نظری ثبت نشده است.
captcha image reload