下面是生成语言数组的php:
<?php
/**
* Language chooser for qtranslate-x plugin
*
* @package
*/
function get_language_list() {
if ( function_exists( 'qtranxf_getSortedLanguages' ) ) {
global $q_config;
$list = array();
foreach ( qtranxf_getSortedLanguages() as $key => $language ) {
$list[] = array(
'url' => qtranxf_convertURL( '', $language, false, true),
'lan' => $q_config['language_name'][ $language ],
'cur' => $language == $q_config['language'] ? 'current' : '',
);
}
return $list;
}
}这很好,但我需要重写这个数组,因为具有'cur' == 'current'的元素总是位于中间,例如键是1。
数组有3个元素。垃圾堆看起来像这样:
array(3) {
[0]=>
array(3) {
["url"]=>
string(24) ".dev/en/"
["lan"]=>
string(7) "English"
["cur"]=>
string(0) ""
}
[1]=>
array(3) {
["url"]=>
string(24) ".dev/ka/"
["lan"]=>
string(21) "ქართული"
["cur"]=>
string(0) ""
}
[2]=>
array(3) {
["url"]=>
string(24) ".dev/ru/"
["lan"]=>
string(14) "Русский"
["cur"]=>
string(7) "current"
}
}注意,问题是这个顺序是随机的,唯一的规则是当前的顺序应该总是在中间。
发布于 2016-12-12 00:34:25
如@flynorc所建议
/**
* Language chooser for qtranslate-x plugin
*
* @package marcopolo
*/
function get_language_list() {
if ( function_exists( 'qtranxf_getSortedLanguages' ) ) {
global $q_config;
$list = array();
foreach ( qtranxf_getSortedLanguages() as $key => $language ) {
if ( $language == $q_config['language'] ) {
$cur = true;
$cur_key = $key;
} else {
$cur = false;
}
$list[ $key ] = array(
'url' => qtranxf_convertURL( '', $language, false, true),
'lan' => $q_config['language_name'][ $language ],
'cur' => $cur,
);
}
$middle = $list[1];
$list[1] = $list[ $cur_key ];
$list[ $cur_key ] = $middle;
return $list;
}
}发布于 2016-12-12 00:30:59
我想说:
1)搜索当前并将其从数组中删除
2)然后将其重新插入数组的中间。
$current = array_splice($list,
array_search('current', array_column($list, 'cur')), 1);
array_splice($list, round(count($list)/2), 0, $current);https://stackoverflow.com/questions/41092632
复制相似问题