首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组中的特定元素保持在中间?php

如何将数组中的特定元素保持在中间?php
EN

Stack Overflow用户
提问于 2016-12-12 00:19:27
回答 2查看 51关注 0票数 0

下面是生成语言数组的php:

代码语言:javascript
复制
<?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个元素。垃圾堆看起来像这样:

代码语言:javascript
复制
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"
  }
}

注意,问题是这个顺序是随机的,唯一的规则是当前的顺序应该总是在中间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-12 00:34:25

如@flynorc所建议

代码语言:javascript
复制
/**
 * 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;
    }

}
票数 0
EN

Stack Overflow用户

发布于 2016-12-12 00:30:59

我想说:

1)搜索当前并将其从数组中删除

2)然后将其重新插入数组的中间。

代码语言:javascript
复制
$current = array_splice($list, 
    array_search('current', array_column($list, 'cur')), 1);
array_splice($list, round(count($list)/2), 0, $current);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41092632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档