我的数组设计类似于以下内容:
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]
>
答案 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