数组没有被我的函数填充

时间:2011-10-08 16:33:33

标签: php arrays recursion

我正在尝试使用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'd文件中声明。

我显然做错了什么......但是什么? :)

编辑:通过在DefineSubscription函数中执行print_r,我得到了正确的输出。当我包括它时,我的阵列似乎不是全局的?不应该是吗?

3 个答案:

答案 0 :(得分:1)

如果您使用全局变量,则应使用$ GLOBALS对其进行广告,以确保您在正确的上下文中

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

function DefineSubscription () { ... }

DefineSubscription(...);

print_r($GLOBALS['campaignLimits']);

关心托马斯

答案 1 :(得分:0)

数组([1] => 30)

我是通过print_r'ing $couponLimits ...

得到的

我把所有这些都放在一个页面中......

通过在声明上添加值来尝试调试,并在print_r之后立即尝试require_once或尝试使用include ...

答案 2 :(得分:0)

问题在于范围。 1)您在主程序中声明$ couponLimits 2)稍后,当调用该函数时,您声明全局$ couponLimits 3)你在主页面中调用$ couponLimits,它是指本地的,而不是全局的。

如果您希望“main”$ couponLimits为全局,则必须将其声明为全局。

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

insted of

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