2014-04-25 4 views
3

나는 흥미로운 상황이 있습니다. 여러 페이지에 포함 된 양식을 사용하여 (단순화하고 중복을 줄이기 위해) 일부 영역의이 양식은 DB의 값으로 채워집니다. 그러나 이러한 모든 값이 항상 존재하는 것은 아닙니다. 예를 들어, 나는의 효과에 뭔가를하고 수 :PHP는 문자열을 가져 와서 해당 문자열이 변수로 존재하는지 확인합니다.

<?php echo set_value('first_name', $first_name); ?> 

및 값이 존재하는 곳은 잘 작동,하지만 그들은 처음으로 자신의 이름을 입력 할 수 있기 때문에 $ 사용자는 항상 설정되어 있지 . 그래, 할 수있어 if 문 (단축형 또는 일반) 내에 isset($first_name) && $first_name

변수가 설정되어 있는지, null이 아닌지 확인하기 위해 도우미 함수를 작성하려고합니다. 나는 varIsset('first_name')과 같은 것을하고 싶습니다. first_name은 실제 변수 이름 $ first_name이고 함수는 문자열을 가져 와서 원하는 변수 $ first_name으로 바꾸고 null이 아닌지 확인합니다. 요구 사항을 통과하면 해당 변수 값을 반환합니다 (이 경우 'test'). 요구 사항을 통과하지 못하거나 설정되지 않았거나 null 인 경우 함수는 '{blank}'를 반환합니다.

CodeIgniter가 도움이된다면 Laravel로 전환 할 예정입니다. 어떤 도움을 주셔서 감사합니다. 여기에 내가 지금까지 정리해 놓은 것이 있지만 아무 소용이 없다. 여기

function varIsset($var = '') 
{ 
    foreach (get_defined_vars() as $val) { 
     if ($val == $var) { 
      if (isset($val) && $val) { 
       echo $val; 
      } 
      break; 
     } 
    } 
    die; 
} 

은 사용 예입니다 :

<?php 
if (varIsset('user_id') == 100) { 
    // do something 
} 
?> 

답변

2
내가 배열을 사용하고 (... 또는 내 모든 변수를 초기화) 배열의 키 자신을 확인하지만 기능을 위해 당신이 뭔가를 사용할 수있는 것

예 : variable variables. 범위 문제를 해결하려면 global $$var;을 사용해야하므로 약간의 불쾌한 해결책이됩니다. 자세한 내용은 example here을 참조하십시오.

편집 : 당신은 반환 값이 필요한 경우, 당신처럼 뭔가를 할 수 :

function valueVar($var) 
{ 
    global $$var; 
    return (isset($$var) && !empty($$var)) ? $$var : NULL; 
} 

하지만 솔직히 말해서, 그런 변수를 사용하여 그들이 존재하거나 존재하지 않을 수 있습니다 때 나에게 조금 잘못된 것 같습니다 .

+0

이미 시도 변수 변수와 행운 이러한 경우에이 논리를 사용하는 더 나은 방법이 될 수 있습니다. 이 함수는 도우미 파일 안에 존재하게 될 것입니다. –

+0

@K_G'global' 선언을 잊어 버렸습니다. 제가 추가 한 작업 예제를보십시오. – jeroen

+0

실례에 감사드립니다. 그래도 여전히 거짓말을하고 있는데, 변수가 컨트롤러에서 가장 확실하게 설정되어 있다는 것을 알 수 있습니다. –

0

렌더링이 발생하기 전에 상황은 다음 데이터베이스 결과로 채워집니다

function varIsset($name, array $context) 
{ 
    return !empty($context[$name]); 
} 

검색 할있는 상황, 예컨대을 : 소개하는 더 나은 방법이 될 것입니다. Btw, empty()에는 문자열 값이 "0" 인 작은 경고가 있습니다.

return isset($context[$name]) && strlen($name); 
0

시도 :

<?php 
function varIsset($string){ 
    global $$string; 
    return empty($$string) ? 0 : 1; 
} 
$what = 'good'; 
echo 'what:'.varIsset('what').'; now:'.varIsset('now'); 
?>