我正在尝试使用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,我得到了正确的输出。当我包括它时,我的阵列似乎不是全局的?不应该是吗?
答案 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();