PHP[配列]:最小、最大値のkey を取り出す。最小値を先頭に持ってくる、かつ、先頭を末尾に回す。最小値を配列から削除

// 最小値のkey を取り出す関数
$minKey = array_keys($arr, min($arr))[0];

// 最大値のkey を取り出す関数
$maxKey = array_keys($arr, max($arr))[0];

// 最小値を先頭に持っていった後の配列を作る関数。先頭は、末尾に回る。
array_merge(array_slice($arr, $minKey), array_slice($arr, 0, $minKey));

// 最小値を配列から取り除く
array_splice($arr, $minKey, 1);


    $carsNum = intval(trim(fgets(STDIN)));
    
    // 車の台数が、1 の場合、0 を出力して、終了。
    if($carsNum === 1) {
        echo 0;
        die();
    }

    $count = 0; // 最後に公道に出る教習車が公道に出るまで教習所内のコースを回った回数
    
    $carsOrder = [];
    for ($i = 0; $i < $carsNum; $i++) {
        $carsOrder[] = trim(fgets(STDIN));
    }
    
    for ($i = 0; $i < $carsNum; $i++) {
        $minKey = array_keys($carsOrder, min($carsOrder))[0];
        $maxKey = array_keys($carsOrder, max($carsOrder))[0];
        
        if($minKey > $maxKey) {
            $count++;
        }
        array_splice($carsOrder, $minKey, 1);
        
        $carsOrder = array_merge(array_slice($carsOrder, $minKey), array_slice($carsOrder, 0, $minKey));
    }
    echo $count;