自定义数组排序与不区分大小写的字母排序组合

时间:2019-07-06 15:43:49

标签: php

我的数组设计类似于以下内容:

Array
(
    [0] => apple
    [1] => Pear
    [2] => orange
    [3] => mango
    [4] => [banana]
    [5] => Cantaloupe
    [6] => Peach
)

我需要对它进行排序,以便输出更像:

Array
(
    [4] => [banana]
    [0] => apple
    [5] => Cantaloupe
    [3] => mango
    [2] => orange
    [6] => Peach
    [1] => Pear
)

意思是我需要首先列出[]中的结果,其余结果按字母顺序不区分大小写。

我尝试了natcasesort,但是[]似乎有问题。

我要如何精确地获得结果?请记住,这是一个示例数组,以[开头的结果并不总是第4个结果,结果名称实际上不是[banana]

1 个答案:

答案 0 :(得分:1)

使用此方法的一种方法-找出其中带有方括号[]的数组索引,将该值存储在位置0并重置数组索引。然后用natcasesort()对其余部分进行排序,然后将其与初始数组合并以获得最终数组。

<?php
$array =Array
(
    '0' => 'apple',
    '1' => 'Pear',
    '2' => 'orange',
    '3' => 'mango',
    '4' => '[banana]',
    '5' => 'Cantaloupe',
    '6' => 'Peach',
);
$value_w_bracket = key(preg_grep('/\[\w+\]/i', $array));
$intermediate[0] = $array[$value_w_bracket];
unset($array[$value_w_bracket]);
natcasesort($array);
$final = array_merge($intermediate,$array);
print_r($final);
?>

工作演示: https://3v4l.org/KodUI