2011-11-28 3 views
8

PHP 함수에서 다른 값 유형을 반환 할 수있는 방법이 있습니까? 내가 문자열을 반환하고있어함수가 PHP에서 여러 개의 반환 값 유형을 가질 수 있습니까?

<?php 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 
?> 

조건 중 하나에, 그렇지 않으면 내가 부울을 반환 해요 : 다음 코드는 무슨 뜻인지 설명해야한다. 허용/가능합니까?

+0

당신이 그것을 시도해 봤어

<?php function test($value){ if($value == 1){ $local = successFunction($value); return $local; } else { return false; } } $res = test(1); if ($res) { echo "We are OK ? Right? No? What is this?"; } 

버전? – JJJ

+4

좋은 습관에 신경 쓰면 불가능합니다. – Esailija

+1

그냥 * 할 수 있다는 말은 아닙니다. – thetaiko

답변

14

예. PHP는 느슨하게 입력되므로 모든 변수는 모든 유형을 취할 수 있습니다. 함수 반환 값도 예외는 아닙니다.

+1

그리고 * 많은 * 기본 PHP 함수를 추가하면 유용합니다. 실제로이 설명서에서는 이것을 "혼합 된"반환 유형이라고 부릅니다. – goat

+1

@ chris 그리고 반환 유형이 혼합되지 않은 경우에도 함수는 일반적으로 지정된 반환 유형 또는 false/null을 반환합니다. 그래, 꽤 일반적인 :) – NikiC

+0

scrict 모드가 설정된 PHP 7에서는 사용할 수 없습니다. – PiKey

-3

허용 되는가/가능합니까?

예프.

0

는 예, 아니 ..., 당신은 수익을 정의 할 필요가 어디 ..

0

그것은이 허용 C, 자바,처럼, 허용 이잖아. 그러나, 당신이 준 경우에는 권하지 않습니다. 이것이 의미있는 예를 보려면 예 : strpos() 기능.

3

네, 가능합니다 (권장하지 않음).

당신은 적어도 당신의 Javadoc 주석에서 그것을 선언해야

/** 
* @param int $value 
* @return mixed string|boolean 
**/ 
public function test($value){ 
    if($value == 1){ 
     return "SUCCESS"; 
    } else { 
     return false; 
    } 
} 

심지어 PHP의 기능에서 할 내장 그것은 때때로 (예로 mysql_connect => 부울 | 리소스 링크) 나는 이것에 대해 자신을 궁금해

0

, 왜 다른 것을 돌려 주시겠습니까? 따라서 수신 측에서 확인해야 할 두 가지 사항이 있습니까? 나는 자신이 status 요소를 가진 타입이나 배열의 빈 버전을 돌려 주겠다고 결심했다고 생각한다.

두 가지 예, 일 함수/메소드 내에서 변경할 수 있으며 기본적 예상보다 더 확인하도록 강요하는 방법 : 2

function test($value){ 
if($value == 1){ 
    $local = successFunction($value); 
    return $local; 
} else { 
    return ""; 
} 
} 

$res = test(1); 
    if (!empty($res)) { 
     echo "more likely we are ok"; 
    } 
?> 
관련 문제