2016-07-26 3 views
1

Je me demandais, en termes de performance ...

Si j'avais un tableau _REQUEST $ de 30 éléments, et je besoin pour saisir des éléments de les fixer à de nouveaux réseaux utilisant des fonctions, quand serait-il préférable d'utiliser plusieurs isSet vs forEach + Switch:

Exemple:

  • Méthode 1 = 15 éléments
  • Méthode 2 = 10 éléments
  • Méthode 3 = 2 éléments

Méthode 1:

foreach($_REQUEST['data'] as $key => $val) 
{ 
    switch($key){ 
    case 'blah': 
    $newarray['blah'] = $val; 
    break; 
    ..... 
    case 'blah2': 
    ..... 
    case 'blah3': 
    ..... 
    case 'blah4': 
    ..... 
    } 
} 

Méthode 3:

if(isset($_REQUEST['data']['blah'])) $newarray['blah'] = $_REQUEST['data']['blah']; 
if(isset($_REQUEST['data']['blah2'])) $newarray['blah2'] = $_REQUEST['data']['blah2']; 

Je suppose pour la méthode 3, il est préférable d'utiliser if (isset) mais je ne suis pas sûr, quand serait-il bon d'utiliser l'un sur l'autre?

+0

Je vais dire foreach + if-else. Il est préférable. – Avishake

+0

Qu'est-il arrivé à la méthode 2? – RiggsFolly

Répondre

1

Vous pouvez le faire plus consisely avec array_intersect_key et les tableaux des clés nécessaires pour chacun:

$method1Keys = array_flip(['some','keys']); 
$method2Keys = array_flip(['different','ones']); 
$method3Keys = array_flip(['andsome','more']); 

$method1KeyValueArray = array_intersect_key($_REQUEST['data'],$method1Keys); 
$method2KeyValueArray = array_intersect_key($_REQUEST['data'],$method2Keys); 
$method3KeyValueArray = array_intersect_key($_REQUEST['data'],$method3Keys); 
+0

Oh, c'est net, jamais utilisé ce b4. Donc, si je viens d'ajouter les clés au nouveau tableau, je peux les définir en utilisant array_intersect_key? – Rich

+0

Oui, c'est correct. Php a beaucoup de fonctions intégrées utiles pour les tableaux. Ils ont souvent des noms bizarres, et les ordres de paramètres changent, mais le manuel est solide et les fonctions très utiles une fois que vous les connaissez – Steve

0

Dans votre code, $newarray aura les mêmes clés que la source, et vous définissez la même valeur sur les touches correspondantes. La façon la plus rapide:

$newarray = $_REQUEST['data']; 
+0

Les nouveaux tableaux sont des tableaux plus petits utilisés pour organiser les données en cours de traitement. – Rich