Array_key_exists()期望参数2为数组,给定为null

时间:2015-03-05 08:41:21

标签: php parsing syntax

我收到了标题中可以看到的错误。错误所在页面上的代码如下:

<?php
if (!isset($_SESSION)) 
{
    session_start();
}

include "./option.php";

if($start==true)
{
    $ee= md5(microtime());
    ini_set('session.gc_maxlifetime', 3600);
    $_SESSION['new_version']=true;

    if((!isset($_GET['ee']) or !isset($_SESSION['tempLang'])))
    {
        include "./lang/country_code.php";
        function langue($l)
        {
            if(array_key_exists($l, $_GET["lang_con"])) 
            {
                return $_GET["lang_con"][$l];
            } else {
                return "US";
            }
        }
        $lang = substr(strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), 0, 2);
        if ($lang != ''){$con = langue($lang);}else{$con = "US";}
?>

然后假定的空数组在正确的包含文件中,代码在这里:

$_GET["lang_con"] = array(
    "it" => "IT",
    "ru" => "RU",
    "sv" => "SE",
    "en" => "US",
    "es" => "ES",
    "pl" => "PL",
    "fr" => "FR",
    "no" => "NO",
    "da" => "DK",
    "de" => "DE",
    "nl" => "NL",
    "tr" => "TR",
    "pt" => "BR",
    "zh" => "TW",
    "id" => "US",
    "he" => "IL",
); 

我真的不知道问题所在。

请帮忙,

干杯

1 个答案:

答案 0 :(得分:0)

如果&#34; lang_con&#34;数组在option.phplang/country_code.php包含文件中定义,那么上面的代码应该能够访问它。虽然,您可以在使用array_key_exists()之前添加另一个检查:

if (is_array($_GET["lang_con"]) && array_key_exists($l, $_GET["lang_con"])) {

但是你应该永远不要写 $ _GET超全局数组,只读。如果您需要将变量注入函数,请使用任何其他方式(global keywordpassing as function arguments等),但绝不要写$ _GET,$ _POST,$ _REQUEST superglobals,因为它们有不同的目的。