2012-03-08 4 views
-2

매개 변수가있는 상위 함수를 호출하는 함수를 만드는 데 문제가 있습니다.다른 함수 내에서 함수를 다시 선언하는 방법은 무엇입니까?

function firstfunction($param = null){ 

    function secondfunction(){ 

     $query = mysql_query('SELECT * FROM table_name WHERE table_id="' . fristfunciton(1) . '"'); 

    } 

} 

그것은 오류를 반환 :

은 여기 내 예입니다. 도와주세요!

+0

이 문제가 없습니다. 어떤 다른 함수를 선언 할 이유가 없다. –

답변

2

수 없습니다. 함수는 다른 함수 내에서 선언 된 경우에도 전역 범위에 항상 존재합니다.

1

코드에 2 가지 문제가 있습니다.

  1. 오타가 있습니다. secondfunction에서 fristfunciton으로 전화를 걸었지만 부모 함수의 이름은 실제로 firstfunction입니다.

  2. 상위 함수 내의 하위 함수는 부모 함수가 호출되고 두 함수가 전역 범위를 가질 때 정의됩니다. 부모 함수를 두 번 이상 호출하면 (예를 들어, 하위 함수 내부에서) 동일한 이름의 새 함수를 정의하려고 시도합니다. 동일한 범위에서 같은 이름의 함수 두 개를 선언 할 수 없으므로 실패합니다. 생성 기능에 대한

더 많은 정보는 : http://www.php.net/manual/en/functions.user-defined.php

1

당신이 PHP 5.4을 사용하는 경우, 당신은 anonymous function을 시도 할 수 있습니다.

$first = function($param = null) { 
    $second = function() { 
     $query = mysql_query('...' . $first(1)); 
    } 
} 
1

이렇게하면됩니다.

function first($arg = null) { 
    if (!function_exists('second')) { 
     function second() { 
      first(); 
     } 
    } 
    second(); 
} 
+0

내가 이걸해야한다면 가능할까? 함수 제 ($ ARG = NULL) { 경우 (! function_exists) ('제') { 함수 제() { $ 쿼리 =는 mysql_query ('TABLE_NAME * FROM WHERE 내 table_id = "". 제 ($ ARG) ''); } } } 첫 번째 ('23 '); – leojarina

+0

글쎄, 당신이 뭘하고 싶은지 잘 모르겠다.하지만 이것은 함수에 함수를 넣고 재귀 적으로 호출 할 수있게 해준다. 하지만, 당신은 첫 번째()에서 두 번째()를 호출하지 않습니다 ... 그래서 요점은 무엇입니까? 끝없는 반복에도주의하십시오. – FMCorz

관련 문제