2013-08-29 4 views
0

좀 더 우아하게 할 수있는 PHP가 있습니다. 그것은 기능적으로 작동하므로 스스로 학습하는 것 이상입니다.문자열 또는 패턴으로 배열 키 검색

알파벳 키가 다른 배열 (또는 개체)이 있는데 키가 설정되어 있는지 알아보고 나머지 키를 반환합니다. 나는 모든 키를 검색하고 '_uid'의 나머지 부분을 반환하고자하는, 그래서 기본적으로

if(isset($item->revision->application_uid)) $item->type = 'application'; 
elseif(isset($item->revision->channel_uid)) $item->type = 'channel'; 
elseif(isset($item->revision->workout_uid)) $item->type = 'workout'; 

:

내가 지금 가지고있는 PHP 코드는 if 문 단지 기본입니다 키.

[EDIT] 더 나아가서 나는 대안을 제안했지만, 더 나은 /보다 효율적인 방법이 있는지 궁금해하고 있습니다.

foreach(array_keys((array) $item->revision) as $key) 
{ 
    if($match = strstr($key, '_uid', TRUE)) 
    { 
     $item->type = $match; 
     break; 
    } 
} 

미리 감사드립니다.

foreach ($item->revision as $key => $value) 
{ 
    if ($match = strstr($key, '_uid', TRUE)) 
    { 
     $item->type = $match; 
     break; 
    } 
} 

그래서이 나쁜 보이지 않습니다

+1

보십시오'preg_grep' –

답변

1

코드는 당신이 array_keys를 호출 할 필요가 없습니다 foreach은 이미 키를 제공, 약간 중복입니다.

$item->type = 'none'; 

foreach ($item->revision as $key => $value) 
{ 
    if ($match = strstr($key, '_uid', TRUE)) 
    { 
     $item->type = $match; 
     break; 
    } 
} 

는 그 다음 자신의 함수로이 포장 :

function findUidKey($item) { 

    foreach ($item->revision as $key => $value) 
    { 
     if ($match = strstr($key, '_uid', TRUE)) 
     { 
      return $match; 
     } 
    } 

    return 'none';   
} 

그리고 대신 그 함수를 호출 아마 당신은 어떤 유형을 발견 할 수있는 NULL 값 또는 경우 일부 기본값으로 초기화 할 :

$item->type = findUidKey($item); 

다른 클래스에서도 이것을 랩핑 할 수는 있지만 나중에 다른 기능을 사용하기 시작하면됩니다.

+0

감사합니다. hakre - 많은 감사하겠습니다. –