2010-08-05 8 views
1
function first() { 
    foreach($list as $item) { 
     ${'variable_' . $item->ID} = $item->title; 
     // gives $varible_10 = 'some text'; (10 can be replaced with any number) 
    } 
    $ordinary_variable = 'something'; 
} 

다른 함수에서이 함수의 값을 가져 오는 방법은 무엇입니까?PHP 함수에서 변수 가져 오기

처럼 : 이미 first()

  • $list에 존재

    function second() { 
        foreach($list as $item) { 
         get ${'variable_' . $item->ID}; 
         // getting identical value from first() function 
        } 
        get $ordinary_variable; 
    } 
    
    • 우리는 $variable_id (ID 숫자입니다) 알고는 100 개 이상의 값을 가질 수있는 Array()입니다.
    • $ordinary_variable은 문자열입니다.

    감사합니다. 다음

    function first() { 
        $values = array(); 
        foreach($list as $item) { 
         $values['variable_' . $item->ID] = $item->title; 
         // gives $varible_10 = 'some text'; (10 can be replaced with any number) 
        } 
        $values['ordinary_variable'] = 'something'; 
        return $values; 
    } 
    

    과 :

  • 답변

    5

    당신은 첫 번째 함수는 배열을 반환 할 수

    function second() { 
        $values = first(); 
        foreach($list as $item) { 
         $values['variable_' . $item->ID]; 
         // getting identical value from first() function 
        } 
        $values['ordinary_variable']; 
    } 
    

    또는 매개 변수로 전달합니다

    second(first()); 
    

    내가 조언을 것입니다에 대한 0으로 설정하면 부작용이 발생하고 코드 유지/디버그가 더 어려워집니다.

    0

    ${'variable_' . $item->ID}은 범위를 벗어납니다. 아마도 전역 배열을 만들어 거기에 저장해야합니다.

    간단한 예

    $myvars = array(); 
    
    function first() { 
        global $myvars; 
        ... 
        $myvars['variable_' . $item->ID] = $item->title; 
    } 
    
    function second() { 
        global $myvars; 
        ... 
        echo $myvars['variable_' . $item->ID]; 
    } 
    
    +0

    글로벌 나쁜 불필요하다. 인수 목록은 이유 때문에 존재합니다. –

    +1

    불필요 할 수도 있지만 반드시 나쁜 것은 아닙니다. 두 함수 간의 상호 작용에 대한 컨텍스트가 제공되지 않았습니다. – Fosco

    +0

    Global은 함수가 수행하는 작업과 실제로 작업을 수행하는 데 필요한 작업 간의 상호 작용을 난독 화합니다. 디버깅, 유지 관리 및 확장 성 문제가 발생합니다. 함수의 인터페이스는 진실이어야합니다. –

    관련 문제