我正在尝试将此函数用于返回服务器上文件位置的位置。在编码的底部,我展示了我是如何尝试在其他页面中显示编码的。在回调最后一行编码时,我是否正确,以便在调用函数时显示它?
function record_loc($id,$type)
{
$recdir = mysql_result(mysql_query(
"SELECT rec_loc FROM names WHERE com_id = '".$id."'"), 0 , "rec_loc");
$ver = ($type == 'n' ? '-n.wav' : '-s.wav');
// echo '/doc_rec/' . $recdir . '/' . $id . $ver;
return '/doc_rec/' . $recdir . '/' . $id . $ver;
}
// echo record_loc(120,n); or <?= record_loc(120,n)
?>
答案 0 :(得分:3)
使用return
和echo, print, print_r, sprint
等输出运算符之间存在功能差异。
即:
'return'将其参数作为返回 函数调用的值
'echo'输出一个或多个字符串
因此,在函数中返回将结果作为可以赋予变量的值传递,即$myvar=myfunction();
,然后您需要回显$myvar
(或者回显myfunction();),而在函数中使用echo,只需要myfunction();
即可完成相同的操作。如果要通过其他操作传递函数的结果,请使用return。
答案 1 :(得分:3)
我不确定我是否理解这个问题。但如果它没有返回任何东西,你就无法回显函数。
这是一个返回值的简单函数:
<?php
function do_stuff() {
return rand(1, 10);
}
echo do_stuff();
?>
<?= do_stuff() ?>
答案 2 :(得分:2)
function return_some_value(){
return 'abc';
}
function echo_some_value(){
echo 'def';
}
echo return_some_value() . echo_some_value();
输出将导致echo_some_value首先显示(并返回null),然后传递给echo以进一步执行。 e.g。
defabc
(虽然你期望abcdef
)
编辑对此答案的评论编辑
function record_loc($id,$type)
{
if (($query = mysql_query("SELECT rec_loc FROM names WHERE com_id = '".(int)$id."'")) !== false)
{
if (mysql_num_rows($query) > 0)
return '/doc_rec/'.mysql_result($query,0,'rec_loc').'/'.$id.'-'.($type=='n'?'n':'s').'.wav';
}
return 'Error Not Found';
}
请注意,您应检查连接,检查sql错误并验证输入。我没有用尽所有检查,只是让你的代码做你所要求的。
答案 3 :(得分:1)
或者您返回路径并使用echo record_loc(120,n);
或者您回复返回中的路径(如示例)并使用<?php record_loc(120,n) ?>