2011-10-08 4 views
0

PHP에서 사용자 정의 함수를 사용하여 배열에 항목을 간단하게 추가하려고합니다.배열이 내 함수로 채워지지 않습니다.

$campaignLimits = array(); 
$couponLimits  = array(); 
$subscriptions  = array(); 

기능은 다음과 같습니다 :이처럼, 그 함수를 호출하고

function DefineSubscription($itemname,$subscription,$campaignlimit,$couponlimit) 
{ 
    // Make em global 
    global $campaignLimits, $couponLimits, $subscriptions; 

    // Add stuff to the arrays 
    $campaignLimits[$itemname]  = $campaignlimit; 
    $couponLimits[$itemname]  = $couponlimit; 
    $subscriptions[$itemname]  = $subscription; 
    return; 
} 

:

DefineSubscription(
        "1", // Item Name/Number 
        1,  // Subscription ID 
        1,  // Campaign Limit 
        30  // Coupon Limit 
        ); 

을 그러나, 나는 print_r($couponLimits);, 나는 Array을 얻을 때.

함수와 배열은 require_once 파일에 선언되어 있습니다.

나는 분명히 뭔가 잘못하고 있습니다.하지만 뭐라고 요? :)

EDIT : DefineSubscription 함수 자체에서 print_r을 수행하면 올바른 결과를 얻을 수 있습니다. 내가 배열 할 때 내 배열이 전역이 아닌 것처럼 보입니까? 그게 아닌가? 당신의 글로벌 바르를 사용하는 경우

답변

1

당신은 확인 $ GLOBALS 그들을 ADRESSE해야 당신의 권리 맥락에서

$GLOBALS['campaignLimits'] = array(); 
$GLOBALS['couponLimits']  = array(); 
$GLOBALS['subscriptions']  = array(); 

function DefineSubscription() { ... } 

DefineSubscription(...); 

print_r($GLOBALS['campaignLimits']); 

감사합니다 토마스

+0

의 insted, 나는 $ GLOBALS로 선언 할 수 없었 - 어쨌든 상점 시도 할 것이다. – Jeff

+0

$ GLOBALS 배열의 변수를 선언 할 필요가 없습니다. print_r ($ GLOBALS [ 'couponLimits'], true) – marcocamejo

+0

이상한 일도 절대하지 마십시오. O – Jeff

0

배열 ([1] => 30)

나는 print_r'ing에 의해 그것을 얻었다 $couponLimits ...

나는 모두를 페이지에 넣었다.

는 선언에 값을 추가하여 디버깅을 시도하고 당신이 require_once 또는 include을 시도 print_r 직후 대신 ...

+0

필자는'require_once'가 필요합니다. 파일이 필요합니다. ;) – Jeff

0

문제는 범위입니다. 1) 기본 프로그램에서 $ couponLimits를 선언했습니다. 2) 함수가 호출 될 때마다 LONG 함수가 호출되어 전역 $ couponLimits를 선언합니다. 3) 기본 페이지에서 $ couponLimits를 호출합니다. 전역 페이지가 아닌 로컬 페이지로 참조됩니다. .

"기본"$ couponLimits를 전역으로 지정하려면 전역으로 선언해야합니다.

global $campaignLimits; 
global $couponLimits; 
global $subscriptions; 

내가 전에 코딩 이런 종류의 일을 한
$campaignLimits = array(); 
$couponLimits  = array(); 
$subscriptions  = array(); 
관련 문제