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

PHP函数默认参数传参语法错误求助:指定单个参数调用报错

解决PHP默认参数与命名参数的语法错误问题

问题根源

你遇到的语法错误核心原因是命名参数是PHP 8.0及以上版本才支持的特性,如果你的PHP版本低于8.0,直接使用address: "Rabat Capitale"这种写法会触发语法错误。另外代码里还有两处拼写错误需要修正:you country应为your country,your adress应为your address。

解决方案

方案1:升级PHP到8.0+(推荐)

如果环境允许升级PHP版本,直接使用标准的命名参数语法即可,同时修正拼写错误:

function get_information($country = "Default argument", $name = "Default argument", $age = "Default argument", $address = "Default argument") {
    $line_one = "your country is $country your name is $name <br>";
    $line_two = "your age is $age your address is $address";
    return $line_one . $line_two;
}
// PHP 8.0+ 支持的命名参数写法
echo get_information(address: "Rabat Capitale");

方案2:兼容低版本PHP(无需升级)

如果无法升级PHP版本,可以通过数组传参+默认值合并的方式模拟命名参数效果:

function get_information($params = []) {
    // 定义所有参数的默认值
    $defaultParams = [
        'country' => "Default argument",
        'name' => "Default argument",
        'age' => "Default argument",
        'address' => "Default argument"
    ];
    // 合并用户传入的参数与默认值,用户参数会覆盖对应默认值
    $finalParams = array_merge($defaultParams, $params);
    // 将数组键转为变量名
    extract($finalParams);

    $line_one = "your country is $country your name is $name <br>";
    $line_two = "your age is $age your address is $address";
    return $line_one . $line_two;
}
// 通过数组传递指定参数,实现类似命名参数的效果
echo get_information(['address' => "Rabat Capitale"]);

补充说明

  • 方案1的命名参数写法更简洁直观,符合现代PHP的编码习惯;
  • 方案2的数组传参方式兼容所有PHP版本,适合无法升级环境的场景;
  • 始终建议检查代码中的拼写错误,避免出现不必要的逻辑问题。

内容的提问来源于stack exchange,提问作者Anass bouyardane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:47:35