PHP:asort()関数、最小値が配列の中に、いくつあるかカウントする方法

asort()関数

asort($array);は、「キーを維持したまま」配列の中身を「昇順」に並べ替える。

配列の中で 最小値が、いくつあるか、カウントする方法
// 最小値が、いくつあるかカウントする方法
// 最小値 $minValue, 整数
$minValue = min($arr);

$counts = array_count_values($arr);
$result = $counts[$minValue];

この関数は、$arr 配列の それぞれの要素が、何個あるかを配列で表す関数。
キーは、$arr の要素 になる。
その上で、$counts 配列を、$counts[$minValue]と使うと、
最小値($minValue)が index番号になり、その要素を表すことを意味する。
よって、$arr 配列の中において、最小値が、何個あるか数えることができる。

    [$machineNum, $snackNum] = explode(' ', trim(fgets(STDIN)));
    $arr = [];
    for ($i = 0; $i < $machineNum; $i++) {
        $arr[] = trim(fgets(STDIN));
    }
    // print_r($arr); // キーの数字+1 が、機械の番号を表す。
    
    // 余りを算出する式
    $arrLeft = []; // 各の 余り を格納する。
    for ($i = 0; $i < $machineNum; $i++) {
        $left = $snackNum % $arr[$i];
        $arrLeft[] = $left;
    }
    asort($arrLeft); // キーを維持したまま、昇順に並び替え
    
    // 最小値 $minValue, 整数
    $minValue = min($arrLeft);

    // 最小値が、いくつあるかカウントする方法
    $counts = array_count_values($arrLeft);
    $result = $counts[$minValue];
    
    // $arrLeft のキー の配列を作る。その先頭の値が、最小値(順)になる。
    $keys = array_keys($arrLeft);
    if ($result !== 1) {
        echo $keys[$result - 1] + 1;
    } else {
        echo $keys[0] + 1;
    }