"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني إنشاء جميع المجموعات الممكنة من مصفوفة أحادية الأبعاد في PHP، بما في ذلك المجموعات والتباديل؟

كيف يمكنني إنشاء جميع المجموعات الممكنة من مصفوفة أحادية الأبعاد في PHP، بما في ذلك المجموعات والتباديل؟

تم النشر بتاريخ 2024-11-18
تصفح:386

How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

الحصول على جميع المجموعات الممكنة في PHP: حل شامل

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

&&&] تقوم الوظيفة التكرارية،deep_picker()، بإجراء بحث عميق أولًا على المصفوفة، واستكشاف جميع الفروع ودمج العناصر لتشكيل مجموعات. فهو يحتفظ بسلسلة مؤقتة يتم تعديلها تدريجيًا مع كل عنصر، بينما تقوم مصفوفة التجميع بتخزين المجموعات النهائية. دعونا نفحص كيفية عمل هذه الوظيفة:

  1. الحالة الأساسية : إذا كانت السلسلة المؤقتة فارغة، فهذا يعني أنه يتم النظر في عنصر مستقل. في هذه الحالة، تتم إضافته مباشرة إلى مصفوفة التجميع.
  2. الاستكشاف العودي : عندما يتم دمج عنصر ما، تقوم الوظيفة بإنشاء نسخة من المصفوفة الأصلية وتزيل العنصر الحالي منه. ثم يقوم بعد ذلك باستدعاء Deep_picker() بشكل متكرر على المصفوفة المعدلة، ويمرر السلسلة المؤقتة المحدثة مع العنصر المضاف. إذا كان هناك المزيد من العناصر المراد دمجها، فستستمر العملية العودية.
  3. التركيبات والتباديل : من خلال التكرار خلال كل عنصر والجمع بينها بشكل متكرر، يقوم Deep_picker () بإنشاء جميع التركيبات والتباديل الممكنة بشكل فعال دون تكرار. يضمن هذا الأسلوب تضمين كلا النوعين من السلاسل ('Alpha Beta' و'Beta Alpha') في الإخراج النهائي.
  4. النتيجة النهائية : عندما تستكشف الوظيفة جميع المجموعات، يتم تجميعها تحتوي المصفوفة على المجموعة الكاملة لجميع المجموعات الممكنة من مصفوفة الإدخال.

التنفيذ و التنفيذ

لتنفيذ هذا البحث المتعمق أولاً واسترجاع المجموعات، يمكن استخدام كود PHP التالي:

 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }
    }
}

$collect = array();
depth_picker($array, "", $collect);
print_r($collect);

?>
عند التنفيذ، يُخرج هذا الكود المصفوفة التالية لجميع التركيبات والترتيبات الممكنة:

Array ( [0] => ألفا [1] => ألفا بيتا [2] => ألفا بيتا جاما [3] => ألفا بيتا جاما سيجما [4] => ألفا بيتا سيجما [5] => ألفا بيتا سيجما جاما [6] => ألفا جاما [7] => ألفا جاما بيتا [8] => ألفا جاما بيتا سيجما [9] => ألفا جاما سيجما [10] => ألفا جاما سيجما بيتا [11] => ألفا سيجما [12] => ألفا سيجما بيتا [13] => ألفا سيجما بيتا جاما [14] => ألفا سيجما جاما [15] => ألفا سيجما جاما بيتا [16] => بيتا [17] => بيتا ألفا [18] => بيتا ألفا جاما [19] => بيتا ألفا جاما سيجما [20] => بيتا ألفا سيجما [21] => بيتا ألفا سيجما جاما [22] => بيتا جاما [23] => بيتا جاما ألفا [24] => بيتا جاما ألفا سيجما [25] => بيتا جاما سيجما [26] => بيتا جاما سيجما ألفا [27] => بيتا سيجما [28] => بيتا سيجما ألفا [29] => بيتا سيجما ألفا جاما [30] => بيتا سيجما جاما [31] => بيتا سيجما جاما ألفا [32] => جاما [33] => جاما ألفا [34] => جاما ألفا بيتا [35] => جاما ألفا بيتا سيجما [36] => جاما ألفا سيجما [37] => جاما ألفا سيجما بيتا [38] => جاما بيتا [39] => جاما بيتا ألفا [40] => جاما بيتا ألفا سيجما [41] => جاما بيتا سيجما [42] => جاما بيتا سيجما ألفا [43] => جاما سيجما [44] => جاما سيجما ألفا [45] => جاما سيجما ألفا بيتا [46] => جاما سيجما بيتا [47] => جاما سيجما بيتا ألفا [48] ​​=> سيجما [49] => سيجما ألفا [50] => سيجما ألفا بيتا [51] => سيجما ألفا بيتا جاما [52] => سيجما ألفا جاما [53] => سيجما ألفا جاما بيتا [54] => سيجما بيتا [55] => سيجما بيتا ألفا [56] => سيجما بيتا ألفا جاما [57] => سيجما بيتا جاما [58] => سيجما بيتا جاما ألفا [59] => سيجما جاما [60] => سيجما جاما ألفا [61] => سيجما جاما ألفا بيتا [62] => سيجما جاما بيتا [63] => سيجما جاما بيتا ألفا )
Array
(
    [0] =>  Alpha
    [1] =>  Alpha Beta
    [2] =>  Alpha Beta Gamma
    [3] =>  Alpha Beta Gamma Sigma
    [4] =>  Alpha Beta Sigma
    [5] =>  Alpha Beta Sigma Gamma
    [6] =>  Alpha Gamma
    [7] =>  Alpha Gamma Beta
    [8] =>  Alpha Gamma Beta Sigma
    [9] =>  Alpha Gamma Sigma
    [10] =>  Alpha Gamma Sigma Beta
    [11] =>  Alpha Sigma
    [12] =>  Alpha Sigma Beta
    [13] =>  Alpha Sigma Beta Gamma
    [14] =>  Alpha Sigma Gamma
    [15] =>  Alpha Sigma Gamma Beta
    [16] =>  Beta
    [17] =>  Beta Alpha
    [18] =>  Beta Alpha Gamma
    [19] =>  Beta Alpha Gamma Sigma
    [20] =>  Beta Alpha Sigma
    [21] =>  Beta Alpha Sigma Gamma
    [22] =>  Beta Gamma
    [23] =>  Beta Gamma Alpha
    [24] =>  Beta Gamma Alpha Sigma
    [25] =>  Beta Gamma Sigma
    [26] =>  Beta Gamma Sigma Alpha
    [27] =>  Beta Sigma
    [28] =>  Beta Sigma Alpha
    [29] =>  Beta Sigma Alpha Gamma
    [30] =>  Beta Sigma Gamma
    [31] =>  Beta Sigma Gamma Alpha
    [32] =>  Gamma
    [33] =>  Gamma Alpha
    [34] =>  Gamma Alpha Beta
    [35] =>  Gamma Alpha Beta Sigma
    [36] =>  Gamma Alpha Sigma
    [37] =>  Gamma Alpha Sigma Beta
    [38] =>  Gamma Beta
    [39] =>  Gamma Beta Alpha
    [40] =>  Gamma Beta Alpha Sigma
    [41] =>  Gamma Beta Sigma
    [42] =>  Gamma Beta Sigma Alpha
    [43] =>  Gamma Sigma
    [44] =>  Gamma Sigma Alpha
    [45] =>  Gamma Sigma Alpha Beta
    [46] =>  Gamma Sigma Beta
    [47] =>  Gamma Sigma Beta Alpha
    [48] =>  Sigma
    [49] =>  Sigma Alpha
    [50] =>  Sigma Alpha Beta
    [51] =>  Sigma Alpha Beta Gamma
    [52] =>  Sigma Alpha Gamma
    [53] =>  Sigma Alpha Gamma Beta
    [54] =>  Sigma Beta
    [55] =>  Sigma Beta Alpha
    [56] =>  Sigma Beta Alpha Gamma
    [57] =>  Sigma Beta Gamma
    [58] =>  Sigma Beta Gamma Alpha
    [59] =>  Sigma Gamma
    [60] =>  Sigma Gamma Alpha
    [61] =>  Sigma Gamma Alpha Beta
    [62] =>  Sigma Gamma Beta
    [63] =>  Sigma Gamma Beta Alpha
)
يوفر هذا الأسلوب حلاً شاملاً وفعالاً للحصول على جميع المجموعات الممكنة من العناصر في المصفوفة، مما يضمن تضمين كل من المجموعات والترتيبات المختلفة في المخرجات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3