小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

php-如何根據(jù)數(shù)組中指定的字母對大型數(shù)組進(jìn)行排序,以減少時(shí)間損失?

 印度阿三17 2019-10-25

我如何用數(shù)組中指定的字母有效地對具有百萬個(gè)值的數(shù)組進(jìn)行排序,而又不會(huì)浪費(fèi)時(shí)間.

$letters = array(
"а","б", "в", "г", "?", "д", "е", "ё", "?", "ж", "з", "и", "?", "й", "к", "?", "л", "м", "н", "о", "п", "р", "с", "т", "у", "?", "ф", "х", "?", "ч", "ш", "ъ", "э", "ю", "я"
); 

通過特定鍵對數(shù)組排序的簡單函數(shù).維護(hù)索引關(guān)聯(lián).此函數(shù)還對數(shù)組進(jìn)行排序,但不是按字母排序,而是按英語字母排序(在英語字母中效果更好).

<?php

function array_sort($array, $on, $order=SORT_ASC)
{
    $new_array = array();
    $sortable_array = array();

    if (count($array) > 0) {
        foreach ($array as $k => $v) {
            if (is_array($v)) {
                foreach ($v as $k2 => $v2) {
                    if ($k2 == $on) {
                        $sortable_array[$k] = $v2;
                    }
                }
            } else {
                $sortable_array[$k] = $v;
            }
        }

        switch ($order) {
            case SORT_ASC:
                asort($sortable_array);
            break;
            case SORT_DESC:
                arsort($sortable_array);
            break;
        }

        foreach ($sortable_array as $k => $v) {
            $new_array[$k] = $array[$k];
        }
    }

    return $new_array;
}

$people = array(
    12345 => array(
        'id' => 12345,
        'first_name' => 'Joe',
        'surname' => 'Bloggs',
        'age' => 23,
        'sex' => 'm'
    ),
    12346 => array(
        'id' => 12346,
        'first_name' => 'Adam',
        'surname' => 'Smith',
        'age' => 18,
        'sex' => 'm'
    ),
    12347 => array(
        'id' => 12347,
        'first_name' => 'Amy',
        'surname' => 'Jones',
        'age' => 21,
        'sex' => 'f'
    )
);

print_r(array_sort($people, 'age', SORT_DESC)); // Sort by oldest first
print_r(array_sort($people, 'surname', SORT_ASC)); // Sort by surname

/*
Array
(
    [12345] => Array
        (
            [id] => 12345
            [first_name] => Joe
            [surname] => Bloggs
            [age] => 23
            [sex] => m
        )

    [12347] => Array
        (
            [id] => 12347
            [first_name] => Amy
            [surname] => Jones
            [age] => 21
            [sex] => f
        )

    [12346] => Array
        (
            [id] => 12346
            [first_name] => Adam
            [surname] => Smith
            [age] => 18
            [sex] => m
        )

)
Array
(
    [12345] => Array
        (
            [id] => 12345
            [first_name] => Joe
            [surname] => Bloggs
            [age] => 23
            [sex] => m
        )

    [12347] => Array
        (
            [id] => 12347
            [first_name] => Amy
            [surname] => Jones
            [age] => 21
            [sex] => f
        )

    [12346] => Array
        (
            [id] => 12346
            [first_name] => Adam
            [surname] => Smith
            [age] => 18
            [sex] => m
        )

)
*/

?>

另一個(gè)按值排序的變體:

<?php 
$data = array(
"US" => "United States", 
"IN" => "India", 
"DE" => "Germany", 
"ES" => "Spain"
);

asort($data); 
print_r($data);
/*
Array ([DE] => Germany

[IN] => India

[ES] => Spain

[US] => United States

) 
*/

?>

我的示例數(shù)組用于排序:

<?php
Array
(
    [0] => дувозда??азорсоларо
    [2] => мусовиул?увваро
    [3] => фар?ангшиносону
    [6] => ило?иётшиносони
    [7] => сарнавиштпазир?
    [14] => сангнабишта?ое
    [15] => ило?иётшиносон
    [16] => музаффарият?ои
    [18] => минта?атулбур?
    [20] => фар?ангнома?ои
    [21] => парастишго??ое
    [22] => кишваркушои?ои
    [23] => парастишго??ои
    [24] => фар?ангшиносон
    [26] => та?ъирнопазир
    [29] => ил?одшиносони
    [30] => сангнабишта?о
    [31] => сангнабишт?ои
    [32] => гумро?кунанда
    [34] => байнанна?райн
    [35] => наан?омидааст
    [38] => пар?езкоронаи
    [39] => ме?рпарастист
    [42] => даре?ухвазата
    [45] => лашкаркаши?ои
    [47] => мовароуттаби?
    [49] => дастнах?рдаг?
    [51] => ша?ватпараст?
    [53] => аввалиндара?а
    [56] => ме?рпарастиву
    [57] => ?а?оншиносиро
    [58] => ме?рпарастиро
    [60] => зарвонпараст?
    [62] => ?астишиносиву
    [63] => му?о?ираташон
    [65] => паж??андагон
    [66] => баву?удомада
    [67] => ситорашинос?
    [72] => н???азорсола
    [74] => а?уромаздост
    [75] => ?а?онишинос?
);
?>

此結(jié)果未按我的頂點(diǎn)排序從數(shù)組排序:

<?php
    $array = array (
        "?ктам?он",
        "?айрат",
        "маъруф?он",
        "рустам",
        "карим",
        "?урматой",
        "то?ик?",
        "забони то?ик?",
        "адолат"
    );


    echo "<pre>";
        print_r($array);
    echo "</pre>";

    /*
    Array
    (
        [0] => ?ктам?он
        [1] => ?айрат
        [2] => маъруф?он
        [3] => рустам
        [4] => карим
        [5] => ?урматой
        [6] => то?ик?
        [7] => забони то?ик?
        [8] => адолат
    )
    */

    setlocale(LC_ALL, "tg-Cyrl-TJ"); 
    sort($array, SORT_LOCALE_STRING);

    echo "<pre>";
        print_r($array);
    echo "</pre>";

    /*
    Array
    (
        [0] => адолат
        [1] => забони то?ик?
        [2] => карим
        [3] => маъруф?он
        [4] => то?ик?
        [5] => рустам
        [6] => ?айрат
        [7] => ?урматой
        [8] => ?ктам?он
    )
    */

    /*  Result must be:
    Array
    (
        [0] => адолат
        [1] => ?айрат
        [2] => забони то?ик?
        [3] => карим
        [4] => маъруф?он
        [5] => рустам
        [6] => то?ик?
        [7] => ?ктам?он
        [8] => ?урматой
    )
    */
?>

解決方法:

您可以使用此函數(shù)按任何字符順序?qū)?shù)組值進(jìn)行排序,這需要作為第二個(gè)參數(shù)提供:

function customSort(&$arr, $charOrder) {
    $mappedChar = $charOrder;
    sort($mappedChar);
    $mapping = array_combine($charOrder, $mappedChar);
    foreach($arr as $str) {
        $mapped[] = strtr($str, $mapping);
    }
    return array_multisort($mapped, $arr);
}

就像標(biāo)準(zhǔn)的PHP函數(shù)一樣,它對數(shù)組進(jìn)行原位排序.

這是您將如何使用它:

$charOrder = [
"а","б", "в", "г", "?", "д", "е", "ё", "?", "ж", "з", "и", "?", "й", "к", "?", "л", "м", "н", "о", "п", "р", "с", "т", "у", "?", "ф", "х", "?", "ч", "ш", "ъ", "э", "ю", "я"
];

// Sample unsorted array
$arr = [
        "?ктам?он",
        "?айрат",
        "маъруф?он",
        "рустам",
        "карим",
        "?урматой",
        "то?ик?",
        "забони то?ик?",
        "адолат"
    ];

customSort($arr, $charOrder);

運(yùn)行上面的示例后,$arr將具有以下內(nèi)容:

array (
  'адолат',
  '?айрат',
  'забони то?ик?',
  'карим',
  'маъруф?он',
  'рустам',
  'то?ик?',
  '?ктам?он',
  '?урматой',
) 
來源:https://www./content-1-521001.html

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多