在调试php代码时,抛出了“ Function name must be a string”错误,搜索了一些相关的资料,总结出了下面一些可以引起错误的资料以及解决方法。

产生错误的原因

1、使用系统变量产生错误

php产生“Function name must be a string”错误,一般出现在以“$_”开头的系统变量上面,比如下面的代码就出抛出这个错误.

示例代码:

$_GET['host'] = 'feiniaomy.com';
echo $_GET('host');  //这一行会抛出错误
$_POST['host'] = 'feiniaomy.com';
echo $_POST('host'); //这一行也会抛出错误

注意:

1、$_GET('host') 以及 $_GET('host') 这样写的话,php会认为你的$_GET或$_POST是一个 function 函数,但前面又有$符号,php 又认为他们是一个变量

2、变量是不能作为函数的,所以php会抛出“Function name must be a string”错误

3、如果在使用$_GET,$_POST,$_COOKIE,$_FILES,$_REQUEST 以及 $_SERVER 输出其中单的变量时,一定要用方括号而非括弧,例如 $_GET['xxx'] , $_POST['xxx']

修正上面的错误代码:

$_GET['host'] = 'feiniaomy.com';
echo $_GET['host'];
$_POST['host'] = 'feiniaomy.com';
echo $_POST['host'];

2、使用数组产生错误

在输出数组的单个元素时,如果不使用方括号也会产生“Function name must be a string”错误

错误代示例:

$arr = array('1','2','3',"feiniaomy.com");
echo $arr(3); //这一行会抛出错误

修正代码:

$arr = array('1','2','3',"feiniaomy.com");
echo $arr[3];