سؤال

هل هناك طريقة سهلة تكرار عبر مجموعة النقابي من هذا الهيكل في PHP:

مجموعة $searches لديه ترقيم المؤشر ما بين 4 و 5 النقابي أجزاء.لذلك أنا لا تحتاج فقط إلى تكرار عبر $searches[0] من خلال $searches[n], ولكن أيضا $searches[0]["part0"] من خلال $searches[n]["partn"].الجزء الصعب هو أن مختلف المؤشرات أرقام مختلفة من أجزاء (البعض قد يكون في عداد المفقودين واحد أو اثنين).

الأفكار على القيام بذلك بطريقة لطيفة وأنيق مفهومة?

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

المحلول

عش اثنين foreach الحلقات:

foreach ($array as $i => $values) {
    print "$i {\n";
    foreach ($values as $key => $value) {
        print "    $key => $value\n";
    }
    print "}\n";
}

نصائح أخرى

أنا أعرف أنها مسألة استحضار الأرواح ، ولكن بالتكرار على المصفوفات متعددة الأبعاد سهلة مع Spl التكرار

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));

foreach($iterator as $key=>$value) {
    echo $key.' -- '.$value.'<br />';
}

انظر

يبدو مكانا جيدا وظيفة العودية, esp.إذا كان لديك أكثر من اثنين من مستويات من العمق.

function doSomething(&$complex_array)
{
    foreach ($complex_array as $n => $v)
    {
        if (is_array($v))
            doSomething($v);
        else
            do whatever you want to do with a single node
    }
}

يجب أن تكون قادرا على استخدام متداخلة foreach المنصورة

من php دليل

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}

يمكنك فقط حلقة على كل من "جزء[n]" العناصر واستخدام isset لمعرفة ما إذا كانت موجودة فعلا أم لا ؟

أنا حقا لا أفهم ما تقصد هنا - بالتأكيد زوج من foreach حلقات لا ما تحتاج ؟

foreach($array as $id => $assoc)
{
    foreach($assoc as $part => $data)
    {
        // code
    }
}

أو هل تحتاج إلى شيء متكررة?أود أن تكون قادرة على مساعدة أكثر مع المثال البيانات السياق كيف تريد البيانات التي تم إرجاعها.

النظر في هذا متعددة dimentional مجموعة, أتمنى هذه الوظيفة سوف تساعد.

$n = array('customer' => array('address' => 'Kenmore street',
                'phone' => '121223'),
      'consumer' => 'wellington consumer',
      'employee' => array('name' => array('fname' => 'finau', 'lname' => 'kaufusi'),
                     'age' => 32,
                 'nationality' => 'Tonga')
      );



iterator($n);

function iterator($arr){

    foreach($arr as $key => $val){

    if(is_array($val))iterator($val);

    echo '<p>key: '.$key.' | value: '.$val.'</p>';

    //filter the $key and $val here and do what you want
    }

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