2017-12-16 30 views
1

私は、エキス選択したアレイ値

"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek" 

さて、文字列の形で配列のキーのリストを持っているだけで、これらの値を抽出する、すなわち$ myarrayの[「hasAddstrict」] $となるべきリストのPHPに基づいて、 hasAddStrictなど

これは簡単な方法はありますか?私はむしろ汚いソリューション:

$ff = explode(',' ,"hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek"); 
    foreach ($ff as $key){ $ff[$key] = $SERVICE[$key] ; } 
    extract($ff); 
+0

tbh私は良い方法はないと思う。 _BUT_配列の形でキー/値を使用するのに何が妨げられますか?それらを一緒にしておき、(おそらく予測不可能な)変数を使って名前空間をスパムしないようにする方が良いでしょう。 – Jeff

答えて

0

私は本当に良い方法がないとジェフに同意し、配列として変数を維持することは、おそらく良いアイデアですが、機能のためにそれを包むことができること利便性(PHP 5.6でテスト):

<?php 

function array_extract(array $assoc_array, $keys_list) 
{ 
    return array_intersect_key($assoc_array, array_flip(explode(',', $keys_list))); 
} 

extract(array_extract($SERVICE, "hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek")); 

次のように試験した場合:

$SERVICE = [ 
    'hasAddStrict' => 123, 
    'freqItems' => 456, 
    'freqAmount' => 789, 
    'freqUnit' => 'abc', 
    'freqFirstDayOfWeek' => 'def', 
]; 

extract(array_extract($SERVICE, "hasAddStrict,freqItems,freqAmount,freqUnit,freqFirstDayOfWeek")); 

var_dump($hasAddStrict, $freqItems, $freqAmount, $freqUnit, $freqFirstDayOfWeek); 

をあなたは出力を得ます210

int(123) 
int(456) 
int(789) 
string(3) "abc" 
string(3) "def" 
+0

それは非常に近いです。私はPHPが本当に短いそれを保つために抽出($配列、$ array_of_keys_to_extract)を提供すると期待していた。 Jeffの配列、つまり$ SERVICE ['freqFirstDayOfWeek']を維持する提案では、特に変数の数が制限されている関数で、すべての中括弧と引用を入力する物理的な制限が発生します... – user30424

関連する問題