【发布时间】:2012-12-07 17:02:14
【问题描述】:
在 PHP 函数中,有时我发现可以回显某些内容,但无法返回。
例如,这成功地将结果回显到页面上:
function get_page_id( $path ) {
global $mysqli;
if ($stmt = $mysqli->prepare("SELECT state FROM country WHERE city = ?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($state);
$stmt->fetch();
$stmt->close();
echo $state;
}
}
但是,这个函数不返回值:
function get_page_id( $path ) {
global $mysqli;
if ($stmt = $mysqli->prepare("SELECT state FROM country WHERE city = ?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($state);
$stmt->fetch();
$stmt->close();
return $state;
}
}
是什么让一个值能够被回显但不能被返回?
$state 变量在别处被调用,并作为全局变量包含在内,但未包含在示例中。有趣的是,当我将函数更改为返回 $state.'';它按照我的预期返回结果,但只有当我附加空字符串时它才会这样做。为什么会这样?
【问题讨论】:
-
什么是 $state,它在哪里声明?
-
它应该返回......你确定你用同样的方式称呼它们吗?
-
你基于什么代码做这个假设?你试过
echo get_page_id(...)使用返回值的函数吗? -
@iMoses yes echo get_page_id() 确实按照您的建议工作。我正在使用: die(get_page_id());这不起作用,这对我来说没有意义,因为 echo 确实产生了预期的结果。
-
当回显字符串时,
echo命令在die命令之前执行。当返回一个值并且什么都不做时,不会打印任何内容。