【发布时间】:2016-12-12 00:19:27
【问题描述】:
我正在关注生成语言数组的 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"
}
}
注意,问题是这个顺序是随机的,唯一的规则是当前的顺序应该总是在中间。
【问题讨论】:
-
为什么需要
cur成为中间人?您不能以$list["cur"]的身份访问它吗? -
如果你的数组不会很大并且你不介意开销,你可以存储当前语言的索引,同时也存储对“中间”元素的引用和在循环之后只需交换这两个元素
-
@JonathanWheeler 为什么不是一个短暂的问题? :)
-
@flynorc 这是个主意。