Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组的自定义排序与不区分大小写的字母排序相结合_Php - Fatal编程技术网

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

Php 数组的自定义排序与不区分大小写的字母排序相结合,php,Php,我有一个设计与以下类似的阵列: Array ( [0] => apple [1] => Pear [2] => orange [3] => mango [4] => [banana] [5] => Cantaloupe [6] => Peach ) 我需要对其进行排序,以便其输出更像: Array ( [4] => [banana] [0] => apple [

我有一个设计与以下类似的阵列:

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
,但是
[]
似乎有问题


请记住,这是一个示例数组,以
[
开头的结果不一定是第四个结果,结果名称也不一定是真正的
[banana]
用这种方法实现的一种方法-找出带有括号的数组索引
[]
在其中,将该值存储在位置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);
?>

工作演示: