Frage

Gibt es eine einfache Möglichkeit zur Iteration über ein assoziatives array dieser Struktur in PHP:

Array $searches hat einer nummerierten index, mit zwischen 4 und 5 assoziativen Teile.Also ich brauchen nicht nur zum Durchlaufen $searches[0] durch $searches[n], aber auch $searches[0]["part0"] durch $searches[n]["partn"].Der schwierige Teil ist, dass verschiedene Indizes haben eine unterschiedliche Anzahl von teilen (einige fehlen möglicherweise eine oder zwei).

Gedanken auf, dies zu tun in einer Weise, die ist schön, ordentlich und verständlich?

War es hilfreich?

Lösung

Nest zwei foreach Schleifen:

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

Andere Tipps

Ich weiß, es ist Frage Nekromantie, aber der Iteration über Mehrdimensionale arrays ist einfach mit Spl-Iteratoren

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

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

Finden

Sieht aus wie ein guter Ort für eine rekursive Funktion, esp.wenn Sie mehr als zwei Ebenen an Tiefe.

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

Sie sollten in der Lage sein, die Verwendung einer geschachtelten foreach-Anweisung

aus der php-Handbuch

/* 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";
    }
}

Können Sie gerade Schleife über alle "Artikel[n]" Elemente und verwenden Sie isset, um zu sehen, ob Sie wirklich existieren oder nicht?

Ich bin wirklich nicht sicher, was du meinst hier sicher ein paar foreach-Schleifen tut, was Sie brauchen?

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

Oder benötigen Sie etwas rekursiv?Ich würde in der Lage sein zu helfen, mehr mit Beispiel-Daten und ein Rahmen, wie Sie möchten, dass die Daten zurückgegeben.

Betrachten Sie diese multi-dimensionale Arrays, ich hoffe, diese Funktion wird Ihnen helfen.

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top