2016-07-26 5 views
1

私は30個の要素の$ _REQUEST配列を持っていた、と私は必要に応じて、私は...パフォーマンスの面で、

を思っていました

例:ときにFOREACH + SWITCH対複数ISSETを使用する方が良いであろう、機能を使用して新しいアレイにそれらを設定するための要素をつかむために

  • 方法1 = 15の要素
  • 方法2 = 10要素
  • 方法3 = 2つの要素

方法1:

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

方法3:

if(isset($_REQUEST['data']['blah'])) $newarray['blah'] = $_REQUEST['data']['blah']; 
if(isset($_REQUEST['data']['blah2'])) $newarray['blah2'] = $_REQUEST['data']['blah2']; 
場合に使用する方がよい方法3について引き受ける

(ISSET )しかし、私は確信していません、いつ他のものを使用するのが良いのでしょうか?

+0

私はforeachのを言う+のif-elseます。それはさらにいいです。 – Avishake

+0

方法2はどうなりましたか? – RiggsFolly

答えて

1

あなたがarray_intersect_keyとそれぞれに必要なキーの配列で、よりconsiselyこれを行うことができます。

$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

ああ、これはきちんとしている、このb4を使ったことはない。したがって、新しい配列にキーを追加するだけで、array_intersect_keyを使用してキーを設定できますか? – Rich

+0

はい、正しいです。 Phpには、配列のための便利な組み込み関数がたくさんあります。彼らはしばしば奇妙な名前を持っており、パラメータの順序は変わっていますが、マニュアルは堅実であり、関数について知っていれば非常に便利です – Steve

0

コードでは、$newarrayはソースと同じキーを持ち、一致するキーで同じ値を設定しています。最速の方法:

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

新しい配列は、処理されるデータを整理するために使用されるより小さな配列です。 – Rich

関連する問題