缺少函数参数错误

时间:2012-03-06 17:09:01

标签: php function post

我想使用一个函数来回显一个名为“name”的值。该值通过POST方法从表单发送到函数。

我的HTML:

<html>
<head>
<title> function play </title>
</head>
<body>
<form method="post" action="function.php">
Name: <input type="text" name="name"/>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>

我的PHP:

<?php
$name= $_POST['name'];
function writeName($name)
{
echo $name;
}
writeName();
?>

出于某种原因,我不断收到错误:

警告:缺少writeName()的参数1,在第7行的C:\ xampp \ htdocs \ function.php中调用,在第3行的C:\ xampp \ htdocs \ function.php中定义

注意:未定义的变量:第5行的C:\ xampp \ htdocs \ function.php中的名称

我做错了什么?

7 个答案:

答案 0 :(得分:2)

您需要将参数传递给函数。

writeName($name);

答案 1 :(得分:2)

正如其他人所说,当你调用函数时,你需要将你的值作为参数传递。

PHP中的变量是"scoped"。这意味着无论您在何处定义变量都会影响其上下文。在您的示例中,脚本级别定义的$ name与定义为函数参数的$ name不同。但是,函数中使用的$ name将始终引用该函数中的相同变量

enter image description here

要将其付诸实践,请考虑以下事项:

$name = 'a';
function writeName( $name )
{
    echo $name; // echoes 'b'
}
writeName( 'b' );
echo $name;  //echoes 'a'

考虑它的另一种方法是只更改变量的名称,使它们明显不同:

$getName= $_POST[ 'name' ];

function writeName( $nameToWrite )
{
    echo $nameToWrite;
}

writeName( $getName );

您还可以使用函数内的global关键字让PHP知道您在全局范围内(即在脚本级别,在函数外部)引用变量,但这通常是糟糕的做法。

$getName = $_POST[ 'name' ];

function writeName()   // Notice that we don't need to pass $getName as an argument
{
    global $getName;
    echo $getName;
}

writeName();

答案 2 :(得分:1)

您将函数定义为function writeName($name),这意味着它期待参数。但是当你调用函数时,你不会传递参数。尝试更改

writeName();

为:

writeName($name);

答案 3 :(得分:0)

您必须将参数传递给函数writeName($name);

您可以为函数参数设置默认值:

function writeName($name = null)
{
   echo $name;
}

答案 4 :(得分:0)

您没有将参数传递给函数。试试这个:

<?php
function writeName($name)
{
echo $name;
}
writeName($_POST['name']);
?>

答案 5 :(得分:0)

原因是:您将writeName函数声明为期望名为$name的参数。但是当你调用函数时,你没有传递任何参数。你应该使用这样的函数:

writeName("some string here");

答案 6 :(得分:0)

您已经定义了'writeName'函数来接受一个参数。调用该函数时,您必须提供此参数。

writeName($name);

writeName($_POST['name']);