使用特定字母的PHP排序数组

1 php arrays sorting letter sql-order-by

我有一个像下面这样的php数组:

Array ( 
[0] => Array ( [value] => 5 [label] => Akon )
[1] => Array ( [value] => 6 [label] => Angel ) 
[2] => Array ( [value] => 7 [label] => Britny ) 
[3] => Array ( [value] => 9 [label] => Mark Anthony ) 
[4] => Array ( [value] => 8 [label] => Michel ) 
[5] => Array ( [value] => 4 [label] => Shaggy ) 
[6] => Array ( [value] => 3 [label] => Smith ) 
) 
Run Code Online (Sandbox Code Playgroud)

我需要按特定字母排序这个数组.例如,如果我按这个"M"字母数组排序应该如下所示.

Array ( 
[3] => Array ( [value] => 9 [label] => Mark Anthony ) 
[4] => Array ( [value] => 8 [label] => Michel ) 
[6] => Array ( [value] => 3 [label] => Smith ) 
[0] => Array ( [value] => 5 [label] => Akon ) 
[1] => Array ( [value] => 6 [label] => Angel ) 
[2] => Array ( [value] => 7 [label] => Britny ) 
[5] => Array ( [value] => 4 [label] => Shaggy ) 
) 
Run Code Online (Sandbox Code Playgroud)

请问信应该是数组的第一个.(这里以m开头)我非常感谢你的任何帮助.非常感谢你...

use*_*291 7

你的比较逻辑将是这样的:

  • 如果两个字符串A和B以相同的字母开头,则照常比较它们
  • 如果A以'M'开头,A赢
  • 如果B以'M'开头,则B获胜
  • 否则,照常比较

在代码中

$strings = array('Foo', 'Moo', 'Xuux', 'Me', 'Blah', 'Ma');
$letter = 'M';

usort($strings, function($a, $b) use($letter) {
    if($a[0] != $b[0]) {
        if($a[0] == $letter) return -1;
        if($b[0] == $letter) return +1;
    }
    return strcmp($a, $b);  
});

print_r($strings);
Run Code Online (Sandbox Code Playgroud)