Question

Existe-t-il un moyen simple de parcourir un tableau associatif de cette structure en PHP :

Le tableau $searches possède un index numéroté, avec entre 4 et 5 parties associatives.Donc je n'ai pas seulement besoin de parcourir $searches[0] à travers $searches[n], mais aussi $searches[0]["part0"] à travers $searches[n]["partn"].Le plus difficile est que différents index ont un nombre différent de pièces (il peut en manquer une ou deux dans certains).

Que pensez-vous de faire cela d'une manière agréable, soignée et compréhensible ?

Était-ce utile?

La solution

Nid deux foreach boucles:

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

Autres conseils

Je sais que c'est une question de nécromancie, mais itérer sur des tableaux multidimensionnels est facile avec Spl Iterators

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

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

Voir

Cela ressemble à un bon endroit pour une fonction récursive, en particulier.si vous avez plus de deux niveaux de profondeur.

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

Vous devriez pouvoir utiliser une instruction foreach imbriquée

du manuel 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";
    }
}

Pouvez-vous simplement parcourir tous les éléments "part[n]" et utiliser isset pour voir s'ils existent réellement ou non ?

Je ne suis vraiment pas sûr de ce que vous voulez dire ici – une paire de boucles foreach fait sûrement ce dont vous avez besoin ?

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

Ou avez-vous besoin de quelque chose de récursif ?Je serais en mesure de vous aider davantage avec des exemples de données et un contexte dans lequel vous souhaitez que les données soient renvoyées.

Considérez ce tableau multidimensionnel, j'espère que cette fonction vous aidera.

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top