致命错误:未捕获的ArgumentCountError:函数translate()的参数太少,传入了1个,而预期正好有3个

问题描述 投票:0回答:1

这个基本函数调用有效;

function translate($google) {
    $en = array("Mother", "Father");
    $de = array("Mutter", "Vater");
    $s = str_replace($en, $de, $google);
    return $s;
}

但这不起作用

$en = array("Mother", "Father");
$de = array("Mutter", "Vater");
function translate($google, $en, $de) {
    $s = str_replace($en, $de, $google);
    return $s;
}

当这样调用时:

echo translate(
         fonkfonk(
             str_replace(
                 array("\n", "\r", "\t"),
                 array("‌​", "", ""),
                 file_get_co‌​ntents($cache)
             )
         )
     );

我得到:

致命错误:未捕获的 ArgumentCountError:函数 translate() 的参数太少,传入 1 个参数,而预期恰好有 3 个参数

php function-call
1个回答
1
投票

您的问题是您在调用函数时没有向函数提供

$en
$de
的值。

$en = array("Mother", "Father");
$de = array("Mutter", "Vater");
function translate($google, $en, $de) {
    $s = str_replace($en,$de,$google);
    return $s;
}

echo translate(fonkfonk(.....)); // error because translate() does not know what
                                 // $en and $de are supposed to be

您仅提供

fonkfonk()
函数的结果作为第一个参数 (
$google
),而不提供第二个和第三个参数。

您应该做的是在函数调用中提供

$en
$de
的值,或者在定义函数时导入它们:

function translate($google, $en, $de) {
    $s = str_replace($en,$de,$google);
    return $s;
}

$en = array("Mother", "Father");
$de = array("Mutter", "Vater");
echo translate(fonkfonk(.....), $en, $de);

或者:

$en = array("Mother", "Father");
$de = array("Mutter", "Vater");
function translate($google) use ($en, $de) {
    $s = str_replace($en,$de,$google);
    return $s;
}

echo translate(fonkfonk(.....));
© www.soinside.com 2019 - 2024. All rights reserved.