tableau combiner trois ou plusieurs tableaux avec php
ok, en supposant que j'ai 5 tableaux, tous simplement des tableaux indexés, et je tiens à les combiner, c'est la meilleure façon de figure, est-il une meilleure façon de gérer cela?
function mymap_arrays(){
$args=func_get_args();
$key=array_shift($args);
return array_combine($key,$args);
}
$keys=array('u1','u2','u3');
$names=array('Bob','Fred','Joe');
$emails=array('[email protected]','[email protected]','[email protected]');
$ids=array(1,2,3);
$u_keys=array_fill(0,count($names),array('name','email','id'));
$users=array_combine($keys,array_map('mymap_arrays',$u_keys,$names,$emails,$ids));
ce retourne:
Array
(
[u1] => Array
(
[name] => Bob
[email] => bob@mail.com
[id] => 1
)
[u2] => Array
(
[name] => Fred
[email] => fred@mail.com
[id] => 2
)
[u3] => Array
(
[name] => Joe
[email] => joe@mail.com
[id] => 3
)
)
EDIT: Après beaucoup de benchmarking je wend avec une version de Verre Robots réponse à gérer un nombre variable de tableaux, c'est plus lent que son évidemment, mais plus vite que mon original:
function test_my_new(){
$args=func_get_args();
$keys=array_shift($args);
$vkeys=array_shift($args);
$results=array();
foreach($args as $key=>$array){
$vkey=array_shift($vkeys);
foreach($array as $akey=>$val){
$result[$keys[$akey]][$vkey]=$val;
}
}
return $result;
}
$keys=array('u1','u2','u3');
$names=array('Bob','Fred','Joe');
$emails=array('[email protected]','[email protected]','[email protected]');
$ids=array(1,2,3);
$vkeys=array('name','email','id');
test_my_new($keys,$vkeys,$names,$emails,$ids);
source d'informationauteur Trey
Vous devez vous connecter pour publier un commentaire.
Personnellement pour des raisons de lisibilité, je voudrais faire de cette façon:
Je n'ai pas vérifier l'efficacité, mais dans ma solution, je suis en utilisant uniquement les fonctions standard (ils doivent être optimisés) sans personnalisé de la cartographie et de la boucle à l'extérieur d'eux:
Avez-vous essayé cette solution?
Ici est essentiellement un one-liner pour un nombre d'éléments:
Et voici une version pour PHP 5.2 - sans fonctions anonymes:
Pour un nombre variable d'éléments, il va ressembler à ceci:
Je dois admettre que cela semble assez cryptique, voici donc une version étendue:
Pour PHP 5.2 - cela peut ressembler à ceci:
Simplement essayer ce pour de multiples tableau combiner (si vous avez la longueur de tableaux)