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);
?>
工作演示: