PHP:函数不工作

PHP:函数不工作,php,html,function,Php,Html,Function,大家下午好!我一直在尝试调用一个函数,但它似乎不起作用 这是我得到的代码: <? if (!isset($_SESSION)) session_start(); $acess_level = 4; if (!isset($_SESSION['UserID']) OR ($_SESSION['UserAL'] < $acess_level)) { session_destroy(); header("Location: login"); exit; } $tlan

大家下午好!我一直在尝试调用一个函数,但它似乎不起作用

这是我得到的代码:

<? 
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";}
?>

它就像一个符咒,但如果我使用一个函数,它就是不工作。我错过了什么吗?我做错了什么吗?谢谢你的关注

$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;
}

使用default语句可确保$val始终有一个要返回的值。

$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;
}
使用default语句可确保$val始终有一个要返回的值。

使用此语句: 使用以下命令:
你需要把$TLangs作为函数的参数传递给读函数,考虑做一个Switter语句。返回值而不是回响。@ ChristianG阿纳尔抱歉,但你能教我怎么返回吗?Robbert的返回函数不起作用:\@MisaelVergara,我修复了该函数。我把一些引文删去了。你需要把TLanga作为函数的参数传递给-Read,考虑做一个Switter语句。返回值而不是回响。@ ChristianG阿纳尔抱歉,但你能教我怎么返回吗?Robbert的返回函数不起作用:\@MisaelVergara,我修复了该函数。我省略了一些引号。请注意,如果要回显函数的结果,可能应该从返回,而不是在function@MarkBaker:是的,我从原来的帖子中复制了整个。。删除..只希望OP没有在中提供高级教程PHP@MarkBaker :.. :..哈哈,没有。请注意,如果您正在回显函数的结果,您可能应该从返回,而不是在function@MarkBaker:是的,我从原来的帖子中复制了整个。。删除..只希望OP没有在中提供高级教程PHP@MarkBaker :.. :..哈哈,没有。。