当变量包含一个函数时,为什么它会自动执行PHP

时间:2011-02-15 10:57:12

标签: php variables

请考虑以下事项:

$result = mysql_query($sql);

为什么这会被执行?我能理解我是否写了这个:

mysql_query($sql);

它被执行了吗?但是不是“保持”东西,而不是执行它们的变量点?我是不是在这里?

4 个答案:

答案 0 :(得分:3)

按设计工作:$result被分配了mysql_query()操作的结果,您可以调用它。

你想要的可能是传递函数本身,就像JavaScript允许:

function x() { alert("Hi"); }

window.onload = x;

window.onload();  // will alert "Hi"

这可以使用类似的东西(PHP 5.3之前):

$result = create_function("\$sql", "mysql_query(\$sql);");

或在PHP 5.3中:

$result = function($sql) { mysql_query(\$sql); }

你可以在两种情况下调用创建的函数:

$result($sql);
传递函数的做法在PHP中比在Javascript中更常见。

答案 1 :(得分:3)

如果你执行

mysql_query($sql);

函数的输出丢失,大多数情况下都不好; - )

因此,您希望将函数的输出保存在变量中。此操作符为“=”。

你应该考虑一下,输入

$x = 1 + 1;

你想要$ x = 2;而不是“1 + 1”作为一个字符串,基本上是相同的效果。

答案 2 :(得分:0)

这基本上是在函数返回值时完成的。

后面的语句将成功执行,但您无法使用检索到的数据。

列出的第一个语句根据查询的执行返回结果集,并将其分配给$ result变量。

答案 3 :(得分:0)

如果你写mysql_query($sql);,它会被执行并返回一个值。在这种情况下,值不会被捕获,因此它会丢失。如果你写$result = mysql_query($sql);它会被执行并且返回值被捕获。这就是每种语言(甚至是JS)中的函数的运行方式。

如果你想“保存”一个功能,你可以使用像

这样的东西
$fct = 'mysql_query';
$result = $fct($sql);

或在PHP> 5.3你可以使用闭包,它允许你设置值

$fct = function () use ($sql) {
    return mysql_query($sql);
}
$result = $fct();