2017-12-16 22 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); 

당신은 얻을 출력 :

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

아주 가깝습니다. PHP가 정말 짧게 유지하려면 extract ($ array, $ array_of_keys_to_extract)를 제공하길 바랬습니다. Jeff의 배열 (예 : $ SERVICE [ 'freqFirstDayOfWeek'])을 유지하기 위해 모든 가새와 인용 부호를 입력하는 물리적 인 제지가 발생했습니다 ... 특히 변수 수가 제한된 함수에서 ... – user30424