带有数组搜索的PHP函数不起作用

带有数组搜索的PHP函数不起作用,php,arrays,Php,Arrays,我有一个使用数组搜索的函数不工作。。。这是我的密码 function LangFull($name){ $languageCodes = array( "abkhazian"=>"ab", "afar"=>"aa", "afrikaans"=>"af", "afrikaans"=>"af-za", "zulu"=>"zu", "zulu"=>"zu-za" ); return ucwords(array_search(strtolowe

我有一个使用数组搜索的函数不工作。。。这是我的密码

function LangFull($name){
    $languageCodes = array(
"abkhazian"=>"ab",
"afar"=>"aa",
"afrikaans"=>"af",
"afrikaans"=>"af-za",
"zulu"=>"zu",
"zulu"=>"zu-za"
    );
    return ucwords(array_search(strtolower($name),$languageCodes));
}

echo LangFull("zu"); /// Gives no output
echo LangFull("zu-za"); /// Gives output

与af相同的是没有输出。。。请帮助

您有两个相同的数组键:

"zulu"=>"zu",
"zulu"=>"zu-za"
你需要给他们中的一个起个别的名字

因为它们是相同的,所以尝试访问其中一个是徒劳的,因为PHP不知道您请求的是哪一个

或者,如果试图为给定的键存储多个数据值,则可以将键的值设置为数组,以便根据需要存储更多数据

e、 g

array (
  "afrikaans"=> array(
     "af",
     "af-za",
  ),
  "zulu"=> array(
     "zu",
     "zu-za",
  )
);
编辑。
对于您询问的有关交换键和值的问题:
你可以,鬼已经告诉你了。
然而,保留键的原样(如我上面的数组示例)允许您将所有相关数据整理到一个索引中,并且可以轻松访问它

交换值和键可能会使您更难获得所需的数据,因为您的键现在就是“数据”。因此,要从数组中获取数据,您需要知道数据(因为它现在是键),并且您实际上要获取引用(您的键是什么)


这有点奇怪。它可以工作,但不是很理想

如果可以交换(值到键,键到值),并且不会发生键冲突,那么您也可以这样做:

function LangFull($name){
    $languageCodes = array(
        "ab" => "abkhazian",
        "aa" => "afar",
        "af" => "afrikaans",
        "af-za" => "afrikaans",
        "zu" => "zulu",
        "zu-za" => "zulu",
    );
    return isset($languageCodes[$name]) ? ucwords(strtolower($languageCodes[$name])) : 'Not found';
}

echo LangFull("zu"); /// Gives output
echo LangFull("zu-za"); /// Gives output
echo LangFull("yahoo!");

“zulu”=>“zu”、“zulu”=>“ZUZA”
数组键必须是唯一的,
在函数内部打印($languageCodes)
,您将知道回复的上限是多少,回复的上限是多少