大家下午好!我一直试图调用一个函数,它似乎不起作用。
所以,这是我得到的代码:
<?
if (!isset($_SESSION)) session_start();
$acess_level = 4;
if (!isset($_SESSION['UserID']) OR ($_SESSION['UserAL'] < $acess_level)) {
session_destroy();
header("Location: login"); exit;
}
$tlang = $_SESSION['lang'];
$level = $_SESSION['UserAL'];
include($_SERVER["DOCUMENT_ROOT"] . "/inside/functions.php");
$check = "adv";
function doLang()
{
if ($tlang == 'en') {echo "Advanced Tutorials";}
if ($tlang == 'br') {echo "Tutoriais Avançados";}
if ($tlang == 'es') {echo "Tutoriales Avanzados";}
if ($tlang == 'fr') {echo "Tutos avancés";}
if ($tlang == 'id') {echo "Pelatihan dengan cara proffesional";}
if ($tlang == 'fi') {echo "Edistyneempiä oppaita";}
if ($tlang == 'tr') {echo "Gelişmiş Kılavuzlar";}
}
doLang();
echo "test".doLang()."test"; ?>
“会话”部分工作正常,所以我想根本就没有错字/问题。因此,基本上,doLang()函数会检查用户使用的语言,然后回显“正确”的语言,如您所见。如果我使用这样的东西:
<?
if ($tlang == 'en') {echo "Advanced Tutorials";}
if ($tlang == 'br') {echo "Tutoriais Avançados";}
if ($tlang == 'es') {echo "Tutoriales Avanzados";}
if ($tlang == 'fr') {echo "Tutos avancés";}
if ($tlang == 'id') {echo "Pelatihan dengan cara proffesional";}
if ($tlang == 'fi') {echo "Edistyneempiä oppaita";}
if ($tlang == 'tr') {echo "Gelişmiş Kılavuzlar";}
?>
它就像一个魅力,但如果我使用一个功能,它只是不起作用。我错过了什么,我做错了吗?谢谢你的关注!
答案 0 :(得分:5)
$ tLang不在函数范围内。您需要将变量传递给函数
function doLang($tLang) {
...
}
或使用全局声明
function doLang() {
global $tLang
....
}
第一种方法是首选方法。
你真的应该考虑改变你使用这个功能的方式。要清理它,我会使用switch语句使流更好一些,我会返回值而不是回显结果。现在,既然你在一个echo语句(echo "test".doLang()."test"
)中调用了这个函数,你的函数就可以正常工作,但如果你曾经在一个变量赋值($var = "text".doLang()."text"
)中使用它,你的函数就不会工作
function doLang($tLang)
{
$val = "";
switch($tLang) {
case "br":
$val = "Tutoriais Avançados"
break;
case "es":
$val = "Tutoriales Avanzados";
break;
case "fr":
$val = "Tutos avancés";
break;
case "id":
$val = "Pelatihan dengan cara proffesional";
break;
case "fi":
$val = "Edistyneempiä oppaita";
break;
case "tr":
$val = "Gelişmiş Kılavuzlar";
break;
default:
$val = "Advanced Tutorials";
break;
}
return $val;
}
使用默认语句可确保$val
始终具有要返回的值。
答案 1 :(得分:1)
使用此:
function doLang($tlang)
{
if ($tlang == 'en') { echo "Advanced Tutorials"; }
if ($tlang == 'br') { echo "Tutoriais Avançados"; }
if ($tlang == 'es') { echo "Tutoriales Avanzados"; }
if ($tlang == 'fr') { echo "Tutos avancés"; }
if ($tlang == 'id') { echo "Pelatihan dengan cara proffesional"; }
if ($tlang == 'fi') { echo "Edistyneempiä oppaita"; }
if ($tlang == 'tr') { echo "Gelişmiş Kılavuzlar"; }
}
doLang($tlang);
?>