有关usort函数

关于usort函数

我自己学习时遇到了一些难以理解的部分,比如usort,我总结了一下。

从php.net官方网站上获得

usort ( array &$array , callable $callback )

被解释如下。

&$array :入力する配列

$callback: コールバック関数

简而言之,您可以通过将需要重新排序的数组放在第一个参数位置,并将定义排序顺序的比较函数放在第二个参数位置来进行排序。

使用方法

    今回使う配列
$data = [ 
  ['name' => 'taguchi', 'score' => 80],
  ['name' => 'kikuchi', 'score' => 60],
  ['name' => 'hayashi', 'score' => 70],
  ['name' => 'tamachi', 'score' => 60],
];
    自らが定義した比較関数
  function scores($a, $b) {
    if($a['score'] === $b['score']) {
      return 0;
    }
    return $a['score'] > $b['score'] ? 1 : -1;
  }

在比较函数中所进行的操作。

    • 比べるscoreを$a, $bに置き換える

 

    • scoreが同じ場合、0を返す

 

    $aが$bより大きい場合、1を小さい場合-1を返す。

如果为0的情况下,顺序不会产生影响;如果为1的情况下,会进位;如果为-1的情况下,会借位。

    usort関数による呼び出しとprint_rによる表示
usort($data, 'scores'); //並び替えた関数の表示

print_r($data);
    並び替える前の配列の結果表示
Array
            [name] => taguchi
            [score] => 80

            [name] => kikuchi
            [score] => 60

            [name] => hayashi
            [score] => 70

            [name] => tamachi
            [score] => 60
    並び替えた後の配列の結果表示
Array
            [name] => kikuchi
            [score] => 60

            [name] => tamachi
            [score] => 60

            [name] => hayashi
            [score] => 70

            [name] => taguchi
            [score] => 80

结束

我明白了usort函数的作用是对数组的内容进行排序。使用方法很简单,只需在()里放入想要排序的数组和定义排序顺序的函数即可。

bannerAds