PHP:在define中使用$\u GET
我试图在下面的代码中定义一个常量,以便能够轻松地在$\u POST和$\u GET之间切换,而无需更改多行 但我得到了以下错误: 分析错误:语法错误,意外的“[”,应为: (T_PAAMAYIM_NEKUDOTAYIM)在 /第14行的var/www/public_docs/admin/web_interface/contract.phpPHP:在define中使用$\u GET,php,superglobals,Php,Superglobals,我试图在下面的代码中定义一个常量,以便能够轻松地在$\u POST和$\u GET之间切换,而无需更改多行 但我得到了以下错误: 分析错误:语法错误,意外的“[”,应为: (T_PAAMAYIM_NEKUDOTAYIM)在 /第14行的var/www/public_docs/admin/web_interface/contract.php define(默认的$\u DATA\u方法,$\u GET);//如果应该使用POST,则更改为$\u POST 函数getData($Name,$Defa
define(默认的$\u DATA\u方法,$\u GET);//如果应该使用POST,则更改为$\u POST
函数getData($Name,$Default=”“)
///封装从$\u GET或$\u POST检索的数据
{
return(isset(默认数据方法[$Name])?默认数据方法[$Name]:$DEFAULT);您不能对数组使用定义。这一点非常清楚:
值
常量的值;只允许标量值和空值。标量值是整数、浮点、字符串或布尔值
您可以使用普通参考变量:
$default_data_method =& $_GET;
或者你可以使用$\u REQUEST
,它会自动合并$\u POST
和$\u GET
为什么你还要把$\u GET或$\u POST放在一个常量中呢?$\u GET和$\u POST是超全局变量,可以从代码中的任何地方访问。将它分配给一个普通变量应该足够了,不是你这样做其实不是个好主意。常数应该是常数
如果您没有运行PHP5.6+,则不能将数组作为常量
如果你没有运行5.6+
可以序列化常量中的$\u POST或$\u GET数据,然后在函数中反序列化
define(DEFAULT_DATA_METHOD, serialize($_GET));
你为什么不直接使用$\u REQUEST
,它结合了$\u POST
和$\u GET
?你使用的是哪一个PHP版本?数组作为常量仅在PHP5.6+中受支持。此外,常量应该是“常量”-两个$\u GET和$\u POST都不是常量。啊……忘了$\u REQUEST吧……我真丢脸!^^^网络它还没有更新到5.6中允许这样做吗?我猜他是在假设他永远不会改变$\u GET
,只是在整个脚本中引用它,所以它实际上是常量。我可能错了,但这是我读到的。将数组存储在常量中似乎是一个愚蠢的想法,所以我不会这么做。@barmar这是一个例子我们可能不应该回答的问题,因为做海报试图做的事情是不好的软件工程。@barmar这里有一个允许常量成为数组的参考。
define(DEFAULT_DATA_METHOD, serialize($_GET));