我有一个这样的数组:
[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'];
}
}
有更好的方法吗?
Try with:
$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'];
}
我怀疑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数组语言代码作为键是一种方式,如果你能负担得起改变相同。