La transposition de tableaux multidimensionnels en PHP

Comment tu procèdes à 90 degrés (transpose) un tableau multidimensionnel en PHP? Par exemple:

//Start with this array
$foo = array(
    'a' => array(
       1 => 'a1',
       2 => 'a2',
       3 => 'a3' 
    ),
    'b' => array(
       1 => 'b1',
       2 => 'b2',
       3 => 'b3' 
    ),
    'c' => array(
       1 => 'c1',
       2 => 'c2',
       3 => 'c3' 
    )
);

$bar = flipDiagonally($foo); //Mystery function
var_dump($bar[2]);

//Desired output:
array(3) {
  ["a"]=>
  string(2) "a2"
  ["b"]=>
  string(2) "b2"
  ["c"]=>
  string(2) "c2"
}

Comment voulez-vous mettre en œuvre flipDiagonally()?

Edit: ce n'est pas de devoirs. Je veux juste voir si tout SOers ont plus de solution créative que le chemin le plus évident. Mais depuis quelques gens se sont plaints de ce problème étant trop facile, ce qui sur un plan plus général solution qui fonctionne avec un nème dimension de tableau?

- à-dire Comment voulez-vous écrire une fonction de sorte que:

$foo[j][k][...][x][y][z] = $bar[z][k][...][x][y][j]

?(ps. Je ne pense pas que 12 imbriquée for loops est la meilleure solution dans ce cas.)

  • vouliez-vous dire $bar[2]?
  • Ouais il pro les devoirs depuis son si facile. 🙁
  • Ce n'est pas de devoirs. Et tandis que je me considère comme un "newbie" par rapport à beaucoup d'utilisateurs, et je suis parfaitement capable de courir à travers des boucles for imbriquées comme OIS la réponse. J'ai posé cette question dans l'espoir de trouver plus de solution intelligente. Peut-être 1-2 liner à l'aide d'un lamda fonction + array_map, ou un plus obscurs fonction PHP je ne suis pas au courant. Même si la matrice de la manipulation est relativement "basique", il est bon de revisiter les bases de temps en temps. Vous ne savez jamais ce que certains PHP anciens combattants peuvent avoir leurs manches.
  • par curiosité, pourquoi n'avez-vous pas accepter Codler de réponse?
InformationsquelleAutor Calvin | 2009-04-28