我有这样的数组:
[0] =>
['lang'] => 'DE',
['message'] => 'some text'
[1] =>
['lang'] => 'EN',
['message'] => 'some text'
[2] =>
['lang'] => 'NZ',
['message'] => 'some text'
[3] =>
['lang'] => 'CH',
['message'] => 'some text'
如果找不到$lang = 'NZ'
则和这样的子句然后查找并返回$default_lang = 'DE'
的消息,否则返回'NZ'
的消息
我的意识:
foreach($res_arr as $key => $value) {
if ($res_arr[$key]['lang'] == $lang) {
return $res_arr[$key]['message'];
}
}
foreach($res_arr as $key => $value) {
if ($res_arr[$key]['lang'] == $default_lang) {
return $res_arr[$key]['message'];
}
}
有没有更好的方法呢?
答案 0 :(得分:3)
尝试:
$lang = ''; // lang param
$default_lang = 'DE';
$languages = array(
'DE' => 'some text',
'EN' => 'some text',
'NZ' => 'some text',
'CH' => 'some text'
);
if ( !isset($languages[$lang]) ) {
$lang = $default_lang;
}
$message = $languages[$lang];
修改强>
将数组转换为$languages
数组的方法:
$languages = array();
$your_array = array( /* your data */ );
foreach ( $your_array as $val ) {
$languages[ $val['lang'] ] = $val['message'];
}
答案 1 :(得分:0)
我很怀疑array_search是否可以在这里工作,即在多维数组上。无论如何,这是我的解决方案:
$default_lang_msg = '';
foreach($res_arr as $key => $value) {
if ($res_arr[$key]['lang'] == $lang) {
return $res_arr[$key]['message'];
}
else if ($res_arr[$key]['lang'] == $default_lang) {
$default_lang_msg = $res_arr[$key]['message'];
}
}
return $default_lang_msg;
如果你有能力改变相同的语言代码作为键的btw数组。