php 根据字符串末尾的子字符串的优先级对字符串数组进行排序

f8rj6qna  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(101)

我如何从这里命令一个数组:

$unordered_array = ['11196311|3','17699636|13','11196111|0','156875|2','17699679|6','11196237|7','3464760|10'];

$ordered_array = ['11196111', '156875', '11196311', '17699679','11196237','3464760', '17699636'];

“”后面的数字|“定义了位置,数组需要从低到高排序,并在最后的数组中删除位置号。

63lcw9qa

63lcw9qa1#

$array = array();
foreach($unordered_array as $value) {
    $value = explode('|', $value);
    $array [$value[1]]= $value[0];    
}
ksort($array);
$ordered_array = array_values($array);

var_dump($ordered_array);
vshtjzan

vshtjzan2#

将值拆分为包含id和排序优先级的两个数组,然后使用优先级数组对ids数组进行排序。下面的方法甚至可以在同一个优先级编号被分配给多个id的情况下工作。
代码:(Demo

$unordered_array = ['11196311|3','17699636|13','11196111|0','156875|2','17699679|6','11196237|7','3464760|10'];

$ids = [];
$priorities = [];
foreach ($unordered_array as $v) {
    [$ids[], $priorities[]] = explode('|', $v);
}
array_multisort($priorities, SORT_NUMERIC, $ids);
var_export($ids);

相关问题