我有一个使用array_search无法正常工作的函数......这是我的代码
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相同没有输出...请帮助
答案 0 :(得分:1)
您有两个相同的数组键:
"zulu"=>"zu",
"zulu"=>"zu-za"
您需要将其中一个命名为其他内容。
因为它们是相同的,所以试图访问其中一个是徒劳的,因为PHP不知道你要求的两个中的哪一个。
或者,如果您尝试为给定键存储多个数据值,则可以将键的值设为数组,这样可以根据需要存储更多数据。
e.g。
array (
"afrikaans"=> array(
"af",
"af-za",
),
"zulu"=> array(
"zu",
"zu-za",
)
);
EDIT。
回答您询问有关交换键和值的问题:
你可以,Ghost已经向你展示了如何
但是,按原样保留密钥(如上面的数组示例)允许您将所有相关数据整理到一个索引中,并且可以轻松访问它。
交换值和键可能会使您更难获取所需的数据,因为您的密钥现在是"数据"。因此,要从数组中获取数据,您需要知道数据(因为它现在是关键字)并且您实际上正在抓取引用(您的密钥是什么)。
哪个有点奇怪。它可以工作,但它并不是很理想。
答案 1 :(得分:1)
如果可以互换(键值和键值)并且没有那些键冲突,那么你也可以这样做:
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!");