2014-06-09 4 views
0

나는 사용자 에이전트를 반환하고 코드를 파싱하는 함수를 통해 실행하는 약간의 코드가 있습니다. 이 코드는 내가 이전에 하나의 변수 구문 분석 함수에서 반환을 사용했다 (세 가지가 있습니다 : '플랫폼' '브라우저'버전 ') : isset()을 사용하여 여러 변수 반환

function my_get_user_agent($value) 
{ 
$browser = parse_user_agent(); 
return isset($browser['platform']) ? $browser['platform'] : ''; 
} 

이 코드는 사용자 에이전트의 플랫폼을 반환하기 위해 노력하고 있지만

, 함수에있는 세 변수를 모두 반환하려면 함수를 추가해야합니다. 나는 올바른 내가 가정에 코드의 첫 번째 절반을 변경 :

return isset($browser['platform'], $browser['browser'], $browser['version'])? $browser['platform'] : ''; 

내가 확실하지 오전하지만, 내가 제대로 세 가지 값을 반환해야 할 일을한다. 제안?

+0

세 요소에 대해 키/값 쌍으로 배열을 만듭니다. – Floris

답변

1

당신은 전체 배열을 반환 할 수 있습니다

return $browser; 

그런 다음 나중에 값에 액세스 :

$browser['platform']; 
$browser['browser']; 
$browser['version']; 

다시 질문을 읽고, 당신은 설정 값을 확보 할 것으로 보인다. 다음을 수행 할 수 있습니다.

foreach($browser as $value) { 
    if(isset($value)) { 
     $data[] = $value; 
    } 
} 
return $data; 

이제 데이터에는 플랫폼, 브라우저 및 버전이 포함됩니다.

+0

값을 설정하지 않을 때 예상되는 작업 ... – Floris

0

PHP에는 튜플 구조가 없습니다 : Are there tuples in PHP?

당신은 전체 브라우저 배열 또는 같은 일부 (이 정의되지 않은 값을 반환하지 않습니다) 반환 할 수 있습니다 : 또한

array_intersect_key($browser, array_flip(array("platform", "browser", "version"))) 

을, 함수의 결과를 변수로 설정하려면 list 구조가 유용 할 수 있지만 값이 그 순서대로 존재하는지 확인해야합니다. 이를 위해 SeanWM과 같이 진행해야합니다.

function my_get_user_agent($agent) { 
    $browser = parse_user_agent($agent); 
    foreach(array("platform", "browser", "version") as $value) { 
     $data[] = isset($browser[$value]) ? $browser[$value] : ''; 
    } 
    return $data; 
} 

list($platform, $browser, $version) = my_get_user_agent($agent); 
관련 문제