簡體   English   中英

Array_key_exists()期望參數2為數組,給定為null

[英]Array_key_exists() expects paramete 2 to be array, null given

我收到你在標題中看到的錯誤。 錯誤來自的頁面上的代碼如下:

<?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",
); 

我真的不知道問題是什么。

請幫忙,

干杯

如果在option.phplang/country_code.php包含文件中定義了“lang_con”數組,那么上面的代碼應該能夠訪問它。 雖然,您可以在使用array_key_exists()之前添加另一個檢查:

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

但是你永遠不應該編寫 $ _GET超全局數組, 只能讀取它。 如果你需要在函數中注入變量,可以使用任何其他方式( 全局關鍵字作為函數參數傳遞等),但永遠不要寫$ _GET,$ _POST,$ _REQUEST superglobals ,因為它們有不同的用途。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM