سؤال

سأحاول أن أكون مختصرا ، ولكن واضحا.على سبيل المثال:

$foo['test'] = array();
$foo2('test1','test2','test3','test4');

هل من الممكن إنشاء نوع من حلقة للحصول على هذه المجموعة متعددة الأبعاد?:

$foo['test']['test1']['test2']['test3']['test4'] = ...;

أنت لا تعرف مقدما كم من الوقت ستكون مجموعة foo فو2.آمل أن يكون سؤالي واضحا ولا يتوقف عن السؤال.

أي مساعدة هو موضع ترحيب!شكرا مقدما!

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

المحلول

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

$foo['test'] = array();
$foo2 = array('test1','test2','test3','test4');

$result = array();
$temp = &$result;

foreach($foo2 as $value) {
    $temp[$value] = array();
    $temp = &$temp[$value];
}
unset($temp);
$foo['test'] = $result;
var_dump($foo);

عرض


حل غبي وغبي باستخدام eval(). هذا لا ينبغي أن تستخدم. أنا نشرها فقط للمتعة من ذلك؛)

$foo2 = array('test1','test2','test3','test4');
eval("\$res['".join("']['",$foo2)."']=[];");
$foo['test'] = $res;

عرض

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