2014-04-28 4 views
-3

특정 조건이 충족되면 사용자 정의 텍스트가있는 필드를 가지며 필드가 비어 있으면 필드가 비어 있습니다.사용시 정의되지 않은 변수를 반환하는 isset()을 사용하는 사용자 지정 함수

변수가

function AmISet($fieldName) { 

if (isset($fieldName)) { 

    echo "I am set"; 
}else{ 
    echo "I am not set";  
    } 
}; 

설정되어 있다면 사용자 정의 기능 검사를 작성한하지만 난 그것을 현장을 연결할 때 나는 변수가 정의되지 않은 것으로 오류가 발생합니다. 그러나 내가 정규 일을 할 때 isset($fieldName); 나는 문제가 없다. 이 문제를 해결하고 내 함수가 isset() 대신이 작업을 수행 할 수있는 방법이 있습니까?

함수에 다른 논리를 추가하고 싶지만 변수가 설정된 경우에만 작동하도록하고 싶습니다.하지만 그렇지 않은 경우에는 정의되지 않은 오류를 원하지 않습니다.

저는 PHP에 익숙 하지요. 당신이 저에게 줄 수있는 도움이나 방향에 정말로 감사드립니다. 도움 주셔서 감사합니다!

+0

'isset()'은 함수가 아니라 언어 구조입니다. 존재하지 않는 변수를 불만없이 받아 들일 수있는 함수를 작성하는 방법은 없습니다. 아마도'$ fieldName'이 어디서 왔는지 그리고 왜 비어있을 수 있는지에 대해 자세히 설명해 보면 해결책을 생각할 수 있습니다. –

+0

@ ÁlvaroG.Vicario $ fieldName은 체크 박스가 선택되었을 때 수행되는 쿼리에서옵니다. 확인란을 선택하면 쿼리가 만들어지고 쿼리에서 변수가 설정됩니다. 변수가 존재하지 않으면 필드가 비어 있습니다. 때로는 사용자가 필드 값을 가질 수도 있고 존재하지 않을 수도있는 다른 시간을 가질 수도 있습니다. – greyglassbottle

답변

2

당신은 참조로 변수를 전달해야

function AmISet(&$fieldName) { 
    if (isset($fieldName)) { 
     echo "I am set\n"; 
    } else { 
     echo "I am not set\n";  
    } 
} 

테스트 케이스 : 그대로

$fieldName = 'foo'; 
AmISet($fieldName); // I am set 

unset($fieldName); 
AmISet($fieldName); // I am not set 

그러나,이 기능이 유용하지 않습니다를, 때문에 것에만 출력 문자열을. 당신은 변수를 허용하는 함수를 만들고 (this post에서) 존재하는 경우 반환 할 수 있습니다

이제
function issetor(&$var, $default = false) { 
    return isset($var) ? $var : $default; 
} 

가 너무처럼 사용할 수 있습니다 :

echo issetor($fieldName); // If $fieldName exists, it will be printed 
+1

예! 고마워요,이게 제가 찾고있는 것입니다! – greyglassbottle

+0

@DanFromGermany 당신이 "첫 번째 대답을 받아 들인다"는 말은, OP가 다른 사용자의 대답을 수락 할 때 대답을 수락하는 것과 같이 어떤 사용자 에게라도 말하는 것이 옳다고 생각하지 않습니다. –

+0

* 2moz는 무엇을할까요?게시 된 직후에 몇 개의 답변을 복사하고, 약간 변경하고 담당자를 얻으십시오! 그게 재미있을거야! * – DanFromGermany

1

$fieldName 쿼리에서 오는 그 체크 박스 이 선택되면 수행됩니다. 확인란을 선택하면 쿼리가 만들어지고 쿼리에서 변수 이 설정되고 그렇지 않으면 필드가 비어 있습니다.

<input type="foo" value="1"> 
$foo = filter_input(INPUT_POST, 'foo')==='1'; 

을 그리고 지금 당신은 순수가 (당신이 두 번째 인수로 전달할 수있는 특정 FILTER_VALIDATE_BOOLEAN 필터도 있습니다.) :

Filter functions는 작업의 이런 종류의 설계 항상 존재하는 PHP 부울입니다.

+0

도와 줘서 고마워. 이것은 매우 유망 해 보입니다. 나는 이것을 포함하기 위해 지금 나의 페이지를 다시 써야 할 것이다. 그리고 정의되지 않은 변수 문제를 다룰 필요가 없다. – greyglassbottle