我们知道我们不能将函数存储在变量
中<?php
$k = echo("hello");
?>
或
$k = unset($_SESSION['name']);
他们都会给出错误。因为我们不能直接在变量中存储函数,而是我们如何使用。
$row = mysqli_fetch_assoc($result);
我知道mysqli_fetch_assoc()
函数输出一个存储在变量$row
中的数组。但是如何违反php的一般规则。我们能够将函数存储在变量
答案 0 :(得分:4)
echo
和unset
不是真正的功能。如果您查看文档,您会看到它说:
返回值
没有返回值
由于没有返回任何值,因此无法将它们分配给变量。
mysqli_fetch_assoc()
是一个普通的函数。和任何其他函数一样,您可以将其返回值赋给变量,或者将其作为参数传递给另一个函数,或者在表达式中使用它。
如果无法为变量分配函数值,那么在PHP中编程会很困难。你写不出像:
$max = max($var1, $var2);
$current_time = time();
答案 1 :(得分:1)
我们知道我们不能将函数存储在变量
中
事实并非如此,但我稍后会再回过头来看。
您误解了以下语法:
$variable = functionName();
此不表示该函数存储在变量中。这意味着函数返回的值存储在变量中。
所以没有什么特别的:
$row = mysqli_fetch_assoc($result);
你应该也知道,正如我在开头所暗示的,我们实际上可以在变量中存储一个函数:
//store the function in variable $func
$func = function($a, $b){return $a + $b;}
//execute the function stored in variable $func
echo $func(2,8); //prints 10
这些类型的函数 - 没有名称的函数 - 称为匿名函数或闭包。 See the manual