N dans cette question signifie n'importe quel nombre arbitraire de n'importe quelle taille et n'est pas nécessairement (mais pourrait être) le même. J'ai un tableau avec N nombre de paires clé => valeur. Ces paires clé => valeur peuvent également contenir un autre tableau de taille N avec N nombre de paires clé => valeur. Ce tableau peut avoir une profondeur de N, ce qui signifie que toute paire clé => valeur du tableau pourrait correspondre à un autre tableau. Comment puis-je obtenir toutes les valeurs de ce tableau (les stocker dans un nouveau tableau)? la clé => paires de valeurs?Traverser toutes les valeurs d'un tableau de tableaux
Répondre
voler à Yurkowski dot net 26-Oct-2010 06:16
Si vous avez vraiment pas particulièrement soins sur les clés d'un tableau, vous pouvez capturer toutes les valeurs tout simplement:
$sample = array(
'dog' => 'woof',
'cat' => array(
'angry' => 'hiss',
'happy' => 'purr'
),
'aardvark' => 'kssksskss'
);
$output = array();
// Push all $val onto $output.
array_walk_recursive($sample, create_function('$val, $key, $obj', 'array_push($obj, $val);'), &$output);
// Printing echo nl2br(print_r($output, true));
/*
* Array
* (
* [0] => woof
* [1] => hiss
* [2] => purr
* [3] => kssksskss
*)
*/
Vous pouvez faire smt comme ceci:
$output = array();
function genArray($arr) {
global $output;
foreach($arr as $key => $val) {
if(is_array($val))
genArray($val);
else
output[$key] = $val;
}
}
genArray($myArray);
lieu de récursivité, en utilisant la variable globale et la fonction, il pourrait se faire via des boucles, mais cela est juste une idée générale, et a probablement besoin d'un peu de votre attention, de toute façon . Cela devrait être une bonne chose :)
Avec une ancienne version de PHP, c'est la meilleure solution. Je voudrais supprimer la variable globale et juste le renvoyer dans la fonction si. – bmarti44
@ bmarti44: retourne un tableau? ou un élément de tableau? – hummingBird
Ah, je vois que vous ne pouvez pas le retourner dans ce cas. Cela reviendrait à un élément de tableau, vous avez raison. – bmarti44
Il y a une tonne de solutions dans les commentaires de array_values php doc.
Bien que cela ne semble pas être la meilleure réponse, mes seuls états d'âme sont que cette fonctionnalité est uniquement pris en charge par PHP> = 5.3. Mais encore ce serait la meilleure façon de le faire. – bmarti44
modifier à mon commentaire précédent, PHP en ligne et les fonctions ne sont supportés que par PHP> = 5.3. Si cette fonction utilisait juste une référence à une fonction, elle fonctionnerait dans les anciennes versions de PHP. – bmarti44