php字符串所有函数名,PHP错误:函数名称必须是字符串

本文讨论了一个PHP编程中常见的错误——'函数名称必须是字符串'。问题出现在尝试使用圆括号调用$_COOKIE变量时,而应该使用方括号。正确做法是将`$_COOKIE('CaptchaResponseValue')`改为`$_COOKIE['CaptchaResponseValue']`。此外,还提供了解决方案,包括检查变量是否已设置,并给出了关于PHP函数和数组的使用规范。
摘要由CSDN通过智能技术生成

PHP错误:函数名称必须是字符串

我在PHP代码的顶部添加了以下几行,但是会引发错误:

致命错误:函数名称必须是第2行/home/reg.php中的字符串

if ($_COOKIE('CaptchaResponseValue') == "false")

{

header('location:index.php');

return;

}

?>

我尝试了:$_COOKIE("CaptchaResponseValue")。cookie已成功设置并且可用。 为什么在使用$_COOKIE时出现错误?

RKh asked 2020-07-13T02:59:43Z

8个解决方案

116 votes

应该是$_COOKIE['name'],而不是$_COOKIE('name')

$ _COOKIE是一个数组,而不是一个函数。

Niyaz answered 2020-07-13T03:00:25Z

17 votes

在编程语言或脚本语言中使用括号通常意味着它是一个函数。

但是,PHP中的_myFunction _myFunction123 myFunction不是函数,它是一个数组。 要访问数组中的数据,请使用方括号(“ [”和“]”),该方括号表示从中获取数据的索引。 因此,通过执行$,您基本上是在说:“给我来自索引'test'的数据。

现在,就您的情况而言,您有两种可能性:(1)您想查看它是否为错误-通过查看cookie来内部;或(2)看它是否不存在。

为此,使用isset函数,该函数基本上检查是否设置了变量。

if ( isset($_COOKIE['test'] ) )

如果要检查该值是否为false且已设置,则可以执行以下操作:

if ( isset($_COOKIE['test']) && $_COOKIE['test'] == "false" )

您要记住的一件事是,如果第一个测试失败,它甚至不会费心检查下一个语句是否为AND(_myFunction _myFunction123 myFunction)。

并解释为什么您实际上会收到错误“函数必须是字符串”,请查看此页面。 这是关于PHP中函数的基本创建的,您必须记住的是PHP中的函数只能包含某些类型的字符,其中_myFunction _myFunction123 myFunction不是其中之一。 因为在PHP中$表示一个变量。

函数可能看起来像这样:_myFunction _myFunction123 myFunction以及其他许多模式,但是将其与$和%之类的字符混合将不起作用。

Filip Ekberg answered 2020-07-13T03:01:22Z

5 votes

请尝试使用带有$_COOKIE(而不是括号)的方括号。 像这样:

if ($_COOKIE['CaptchaResponseValue'] == "false")

{

header('Location: index.php');

return;

}

?>

我也更正了您的位置标头调用。

Asaph answered 2020-07-13T03:01:46Z

2 votes

如果您想确定是否设置了cookie ...请使用

if (isset($_COOKIE['cookie']))

Shankar R10N answered 2020-07-13T03:02:07Z

2 votes

它将是$_COOKIE['CaptchaResponseValue'],而不是$_COOKIE('CaptchaResponseValue')

Shahadat Atom answered 2020-07-13T03:02:27Z

1 votes

在PHP.js中,$ _COOKIE是一个函数;-)

function $_COOKIE(name) {

var nameEQ = name + "=";

var ca = document.cookie.split(';');

for(var i=0;i < ca.length;i++) {

var c = ca[i];

while (c.charAt(0)==' ') c = c.substring(1,c.length);

if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length,c.length).replace(/\+/g, '%20'));

}

return null;

}

通过[http://phpjs.org/functions/setcookie:509]

PJ Brunet answered 2020-07-13T03:02:51Z

0 votes

关于括号如何使用的有用解释(除了上面的Filip Ekberg有用的答案),可以在简短的论文《编程语言中的括号》中找到。

Waldhorn answered 2020-07-13T03:03:11Z

-2 votes

require_once '../config/config.php';

require_once '../classes/class.College.php';

$Response = array();

$Parms = $_POST;

$Parms['Id'] = Id;

$Parms['function'] = 'DeleteCollege';

switch ($Parms['function']) {

case 'InsertCollege': {

$Response = College::InsertCollege($Parms);

break;

}

case 'GetCollegeById': {

$Response = College::GetCollegeById($Parms['Id']);

break;

}

case 'GetAllCollege': {

$Response = College::GetAllCollege();

break;

}

case 'UpdateCollege': {

$Response = College::UpdateCollege($Parms);

break;

}

case 'DeleteCollege': {

College::DeleteCollege($Parms['Id']);

$Response = array('status' => 'R');

break;

}

}

echo json_encode($Response);

?>

prasanth answered 2020-07-13T03:03:26Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值