2015-01-25 5 views
1

PHP로 사용자 모듈을 구축하고 있습니다. 그것은 텍스트 기반의 사용자 유형을 읽고는 보고서보기 권한을 관리 할 수있는 숫자 값을 할당합니다여러 if 문을 단순화하십시오.

if ($usr_type == "Architect"){ $usr_rights = 0; } 
if ($usr_type == "Director"){ $usr_rights = 1; } 
if ($usr_type == "Manager"){ $usr_rights = 2; } 
if ($usr_type == "Associate"){ $usr_rights = 3; } 
if ($usr_type == "Assistant"){ $usr_rights = 4; } 
if ($usr_type == "External"){ $usr_rights = 5; } 

이 할 수있는 간단하고, 더 우아한 방법이 있나요를?

+1

참고 : 아직 본 것이 아닌 경우 여기 (http://stackoverflow.com/tour)에서 사이트를 살펴보고 사이트 작동 방식을 확인할 수 있습니다. – Rizier123

+0

Thanks @ Rizier123! – Architect

답변

5

당신은 작업하면 할 switch()를 사용할 수 있습니다.

switch($usr_type) { 
    case "Architect": 
     $usr_rights = 0; 
    break; 
    case "Director": 
     $usr_rights = 1; 
    break; 
    case "Manager": 
     $usr_rights = 2; 
    break; 
    case "Associate": 
     $usr_rights = 3; 
    break; 
    case "Assistant": 
     $usr_rights = 4; 
    break; 
    case "External": 
     $usr_rights = 5; 
    break; 
} 

또는 배열을 사용하십시오.

$valid_types = array(
       "Architect" => 0, 
       "Director" => 1, 
       "Manager" => 2, 
       "Associate" => 3, 
       "Assistant" => 4, 
       "External" => 5 
      ); 

if(isset($valid_types[$usr_type])) { 
    $usr_rights = $valid_types[$usr_type]; 
} 
+1

연관 배열은 실제로 여기에서 가장 좋은 옵션입니다 –

1

당신은 당신은 배열 함수 array_map을 사용할 수있는 switch statement

switch($usr_type) { 

    case "Architect": 
     $usr_rights = 0; 
     break; 

    case "Director": 
     $usr_rights = 1; 
     break; 
    case "Manager": 
     $usr_rights = 2; 

    etc.. 

} 
0

를 사용해야합니다. 우리가 "건축가", "감독"등이 열쇠라고 생각한다면. 그런 다음지도 구조를 사용하여 키와 값을 결합 할 수 있습니다.

<?php 
$usr_rights = array(0, 1, 2, 3, 4, 5); 
$usr_types = array("Architect", "Director", "Manager", "Associate", "Assistant","External"); 
$c = array_combine($usr_types,$usr_rights); 
print_r($d); 

// Test 
echo $c["Architect"]; // output: 0 
?> 

참조 설명서 : http://php.net/manual/en/function.array-map.php

+0

배열이 아닙니다 ... – Casey

+0

@Casey : 이러한 데이터를 모델링하는 더 좋은 방법은 맵 구조를 사용할 수 있습니다. 질문에는 키와 키의 값이라는 두 가지 요소가 있습니다. http://www.htmlcenter.com/blog/some-handy-array-functions-in-php/ 또는 http://www.w3schools.com/php/func_array_combine.asp와 같이 많이 사용됩니다. – Tung

+0

맞아요,하지만 내가 코멘트 할 때 그 코드를 가지고 있지 않았다면, 당신은 단지 array-map을 사용한다고 말했습니다. 이 방법을 사용하면 키 배열을 사용하는 것보다 훨씬 더 비쌉니다. – Casey

3

나는 현재 가지고있는 것과는 다른 두 가지 해결책을 보았습니다. 대한 switch() 설명서를 참조 자세한 내용은

switch($usr_type) { 

    case "Architect": 
     $usr_rights = 0; 
    break; 

    case "Director": 
     $usr_rights = 1; 
    break; 

    //... 

} 

:

1.

이 같은 switch 문을 확인 http://php.net/manual/en/control-structures.switch.php

2. 아니면 배열을이처럼에서 검색 :

$arr = array(0 => "Architect", 1 => "Director", 2 => "Manager", 3 => "Associate", 4 => "Assistant", 5 => "External");   

if(array_search($usr_type, $arr) !== false) 
    $usr_rights = array_search($usr_type, $arr); 
관련 문제