2014-01-24 2 views
2

배열 내부에서 함수 저장소를 호출하려고합니다.하지만 함수, 문자열 또는 다른 형식인지 확인하고 싶습니다.함수는 배열 내부에 저장됩니다.

값이 (오류 PF 물론이 줄 것이다) 내가 호출하지만 난 개체를 전달하는 경우가 있습니다 다음 객체하면 내가

확인할 수 있습니다 이렇게 내 코드

$a=new stdClass(); 
$array = array(function() { 
return "Bhavik Patel"; 
}, "1213",$a); 

foreach ($array as $key => $value) { 
    if (is_object($value)) { 
     echo $value() . "<br/>"; 
    } else { 
     echo $value . "<br/>"; 
    } 
} 

에서 봐 주시기 바랍니다

내 의도는 값이 함수인지 찾아서 호출하는 것입니다.

+0

안녕하세요, 저는 함수를 배열에 저장하는 방법을 알고 있습니다. 내가 무엇을하려고하는지 신중히 읽으십시오. –

+0

@Jack이 닫힌 후에 실현 됨 :) –

+0

중복 마크를 제거 할 수 있습니까? –

답변

3

당신과 같이 \Closure에 대해 값을 테스트 할 수 있습니다 익명 함수를 위해 특별히 확인하려면 :

if ($value instanceof \Closure) { 
    echo $value(), "\n"; 
} else { 
    echo $value; 
} 

is_callable()의 문제는 값이 "explode" 경우, 당신이 원하지 않는 것을 분명히하는 true를 반환 할 것입니다 .

+0

무엇이 폭발하고 있냐? –

+0

@BhavikPatel'$ value = 'explode'시도; $ value();'그리고 내가 무슨 뜻인지 알 수있을 것이다 :) –

+0

ok got it .. ... –

0

is_callable() 당신을 도울 수 있지만,주의 할 것이다 당신과 같은 배열을 전달하는 경우이

array('object or class','method') 

is_callable()는 확인 나은 거라고 있도록 배열

아니라, true를 돌려
if (is_callable($value) && !is_array($value)) {.....} 

+0

문자열도 호출 가능할 수 있습니다 :) –

+0

@Jack yeap , 나는 그것을 놓친다 – leo108

0

is_callable는 PHP에서 [is_callable][1] 시도를 참조하십시오. 나는 그것을 시험했다, 그것은 나를 위해 일한다.

관련 문제