You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用带回调参数的showName函数无法显示Hello如何解决

问题原因
  • sampleName 函数使用 echo 直接打印内容,没有设置返回值,PHP中无显式return的函数默认返回null,因此showName里拼接 "Hello" . $filter($name) 时,$filter($name) 部分的值为null,等于没拼接内容。
  • 你调用showName时仅执行了函数,没有用echo输出它的返回值,就算showName生成了包含Hello的字符串也不会显示出来。
调整方案

方案1(最常用):修改sampleName为返回值模式

把sampleName的输出逻辑从直接打印改为返回字符串,同时调用showName时加上echo输出返回结果即可:

function sampleName(string $name)
{
    return ", good morning $name" . PHP_EOL;
}

function showName(string $name, $filter): string
{
    return  "Hello" . $filter($name);
}

echo showName("John", "sampleName");

运行后输出结果:

Hello, good morning John

方案2:保留sampleName直接打印的特性

如果业务要求sampleName必须直接输出内容,可以用输出缓冲区捕获它的打印内容再拼接:

function sampleName(string $name)
{
    echo ", good morning $name" . PHP_EOL;
}

function showName(string $name, $filter): string
{
    // 开启输出缓冲区,捕获echo的内容
    ob_start();
    $filter($name);
    // 获取缓冲区内容并关闭缓冲区
    $filterOutput = ob_get_clean();
    return  "Hello" . $filterOutput;
}

echo showName("John", "sampleName");

内容的提问来源于stack exchange,提问作者Kholid Saifulloh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:57:03