답변
당신이 할 수있는 "참조"어떤 기능을 할 수 있습니다. 함수 참조는 "메모리상의 주소"또는 무엇인가에 대한 참조가 아닙니다. 이것은 단지 함수의 이름 일뿐입니다.
<?php
$functions = array(
'regular' => 'strlen',
'class_function' => array('ClassName', 'functionName'),
'object_method' => array($object, 'methodName'),
'closure' => function($foo) {
return $foo;
},
);
// while this works
$functions['regular']();
// this doesn't
$functions['class_function']();
// to make this work across the board, you'll need either
call_user_func($functions['object_method'], $arg1, $arg2, $arg3);
// or
call_user_func_array($functions['object_method'], array($arg1, $arg2, $arg3));
좋습니다, 고마워요! 그래서 궁극적으로, 나는 포인터를 만들기위한 수단을 찾고 있다고 생각합니다. 함수를 복제하고 싶지는 않지만 포인터가 참조하는 값을 수정하고 읽을 수있는 포인터 만 있으면됩니다. – user784446
젠장, call_user_func가 PHP의 함수 - 메소드 라이브러리의 실제 멤버라는 사실을 깨달았습니다! 감사! – user784446
구문 분석 오류 : 구문 오류, 예기치 않은 T_FUNCTION on line 7 –
PHP는 가변 함수에 대한 개념을 지원한다.
감사합니다. 해결책으로 그렇게 생각하고있었습니다. 그러나 문서에서는 요소의 값이 모든 유형이 될 수 있으므로 함수를 사용할 수없는 이유는 무엇입니까? 나는 "element"=> object()를 사용할 수 있지만 이것을 어떻게 할 수 있는지 모른다. – user784446
PHP의 call_user_func
을 확인하십시오. 아래의 예를 고려하십시오. 당신은 당신이 루프와 함께 할 수있는 순서로 모든 기능을 실행하려면
두 가지 기능 지금
function a($param)
{
return $param;
}
function b($param)
{
return $param;
}
$array = array('a' => 'first function param', 'b' => 'second function param');
을 고려하십시오.
foreach($array as $functionName => $param) {
call_user_func($functioName, $param);
}
플러스 배열, 등 모든 데이터 유형을 함수 호출, 중첩 배열, 객체, 문자열, 정수 등 등
난 그냥 긴 switch 문을 대체하는 좋은 방법입니다 지나치게 복잡한 얻으려면 메서드를 싶지 않아 추가하고 싶습니다. –
예, 할 수 있습니다
$array = array(
'func' => function($var) { return $var * 2; },
);
var_dump($array['func'](2));
이것은 물론, PHP에게 PHP 버전 5.3.0에 도착 anonymous function 지원을 필요로 않습니다. 이것은 꽤 읽을 수없는 코드로 당신을 떠날 것입니다.
에 PHP를 업데이트 ... 지금은 잘 작동, 예기치 않은 T_FUNCTION 오류를 반환합니다. – user784446
어떤 PHP 버전을 사용하고 있습니까? PHP 5.3.6을 실행중인 랩톱에서 정상적으로 실행됩니다. 당신이 5.2를 사용하고 있다면 이것은 분명히 내 대답에 언급 된대로 작동하지 않습니다. – Treffynnon
아, 알겠습니다. 아마 그럴거야. PHPDesigner2008을 사용하고 있습니다. 따라서 오류 알림 라이브러리가 오래된 것 같습니다. – user784446
- 1. 배열 형식이 배열 값으로 선택되었습니다.
- 2. 값으로 배열 정렬
- 3. 값으로 다차원 배열 합치기
- 4. 값으로 배열 키 정렬
- 5. 값으로 연관 배열 검색
- 6. 함수 인수로 C++ 배열
- 7. 다중 배열 값으로 PHP 배열 정렬
- 8. PHP : 재귀 배열 함수
- 9. PHP에서 루프없이 값으로 배열 채우기
- 10. 값으로 PHP 다차원 배열 정렬
- 11. 배열 값으로 키 배열을 추가
- 12. jquery의 선택자와 값으로 연관 배열
- 13. 문자열의 템플릿을 배열 값으로 바꿉니다.
- 14. 배열 키/값으로 문자 대체
- 15. 바이너리에서 원래의 배열 값으로 변환
- 16. 하위 값으로 PHP 정렬 배열
- 17. 키와 값으로 대칭 연관 배열 검색
- 18. 참조 또는 값으로 전달 함수?
- 19. 함수 : 반환 값으로 사용하는 테이블
- 20. C에서 함수 포인터 배열
- 21. biginteger 배열 함수
- 22. 함수 배열 생성 중?
- 23. PHP 함수> 배열
- 24. 배열 포인터 함수
- 25. 구조체 배열 함수 인수
- 26. 함수 포인터 배열 사용
- 27. 배열 제거 함수
- 28. 자바 스크립트 배열 함수
- 29. vb.net StringBetween 함수 배열
- 30. C++ : 배열 함수
가능한 [PHP 배열에 함수를 저장할 수 있습니까?] (http://stackoverflow.com/questions/1499862/can-you-store-a-function-in-a-php-array) – nawfal
'x()'는 함수 나 함수 호출이 아니라 함수 호출입니다. 즉 함수가 지금 실행되고 키가 'someFunc'에 배열에 저장됩니다. 자세한 정보 (질문에 대한 답변 포함)에 대해서는 [functions] (http://php.net/manual/en/language.functions.php)에 관한 PHP 문서를 읽으십시오. – axiac