Php 在函数中包含已存在的变量

Php 在函数中包含已存在的变量,php,function,Php,Function,我正在尝试创建一个函数,该函数接受输入,确定其值,并从脚本中包含的已存在数组中输出一个字。问题是输出是空的,我相信函数会忽略脚本中已经存在的变量,有没有办法改变这一点,使现有变量不会被函数忽略 以下是函数: 由于多语言要求,单词需要来自数组 function get_genre($id) { if($id == "1"){ $genre = $lang['277']; } if($id == "2"){ $genre = $lang['27

我正在尝试创建一个函数,该函数接受输入,确定其值,并从脚本中包含的已存在数组中输出一个字。问题是输出是空的,我相信函数会忽略脚本中已经存在的变量,有没有办法改变这一点,使现有变量不会被函数忽略

以下是函数:

由于多语言要求,单词需要来自数组

function get_genre($id)
{
    if($id == "1"){
        $genre = $lang['277'];
    }
    if($id == "2"){
        $genre = $lang['278'];
    }
    if($id == "3"){
        $genre = $lang['279'];
    }
    if($id == "4"){
        $genre = $lang['280'];
    }
    if($id == "5"){
        $genre = $lang['281'];
    }
    if($id == "6"){
        $genre = $lang['282'];
    }
    if($id == "7"){
        $genre = $lang['283'];
    }
    if($id == "8"){
        $genre = $lang['284'];
    }
    if($id == "9"){
        $genre = $lang['285'];
    }
    if($id == "10"){
        $genre = $lang['286'];
    }
    if($id == "11"){
        $genre = $lang['287'];
    }
    if($id == "12"){
        $genre = $lang['288'];
    }
    if($id == "13"){
        $genre = $lang['289'];
    }
    if($id == "14"){
        $genre = $lang['290'];
    } 
    if($id == "15"){
        $genre = $lang['374'];
    }
    return $genre;
}    

虽然这并不理想,但您是否考虑过使用关联数组

var $lookupArray = array();
$lookupArray["1"] = $lang['274'];
....
然后你可以这样称呼它:

function get_genre($id)
{            

   return(array_key_exists($id,$lookupArray)) ? $lookupArray[$id] : null;                      

} 


}

您可以将上面的整个代码更改为一行
$index=276+(int)$id$流派=$lang[“$index”]
@xbonez,如果
$id
是15,那就不行了,不过我看到你的观点是使用
开关
语句来帮助整理你的代码。:)@好主意,谢谢你,我不明白,在你的例子中,
$genre=$lang['277'],$lang已经有一个值,因为它以前已经定义过。如果在函数内将其设置为全局,则不允许使用以前从外部设置的值。此外,使用global是一个非常坏的习惯。请参阅此链接:@Sebas虽然我同意
global
不是现有的最佳系统,但如果变量与函数包含在同一个文件中,并且将始终包含在同一个文件中,那么在这种情况下,它没有问题。另外,根据我的知识和经验,
global
读取当前状态下的变量,函数调用后,按原样读取。它不是作为副本传递的,而是一个引用,所以它应该可以正常工作。对我来说,这听起来像是一个骗局,一个丑陋的骗局。如果你真的想使用global,至少在栈顶上使用它…@Sebas:嘿,如果它有效,它也会有效。“没有人说它必须是漂亮的。@Sebas所以在这个页面上向所有人抱怨错误之后,在我指出它不起作用并且存在多个语法错误之后,你删除了你的答案?经典。在get_类型中,将无法访问$lookupArray
function get_genre($id)
{
    global $lang;
    ....
}
function get_genre($id, $lang) //Must pass $lang array to function here
{

}
function get_genre($id)
{
 global $lang;

if($id == "1"){
    $genre = $lang['277'];
}
if($id == "2"){
    $genre = $lang['278'];
}
if($id == "3"){
    $genre = $lang['279'];
}
if($id == "4"){
    $genre = $lang['280'];
}
if($id == "5"){
    $genre = $lang['281'];
}
if($id == "6"){
    $genre = $lang['282'];
}
if($id == "7"){
    $genre = $lang['283'];
}
if($id == "8"){
    $genre = $lang['284'];
}
if($id == "9"){
    $genre = $lang['285'];
}
if($id == "10"){
    $genre = $lang['286'];
}
if($id == "11"){
    $genre = $lang['287'];
}
if($id == "12"){
    $genre = $lang['288'];
}
if($id == "13"){
    $genre = $lang['289'];
}
if($id == "14"){
    $genre = $lang['290'];
} 
if($id == "15"){
    $genre = $lang['374'];
}
return $genre;