usort uses a comparison callback to order complex values.

Sort Callback

sort_callback.php
<?php
function by_score($left, $right) {
    return $left["score"] <=> $right["score"];
}

$firstScore = ;
$rows = [
    ["name" => "Ada", "score" => $firstScore],
    ["name" => "Linus", "score" => 3]
];
usort($rows, "by_score");
$firstName = $rows[0]["name"];
$firstValue = $rows[0]["score"];

echo "firstScore=" . $firstScore . "\n";
echo "firstName=" . $firstName . "\n";
echo "firstValue=" . $firstValue . "\n";
<?php
function by_score($left, $right) {
    return $left["score"] <=> $right["score"];
}

$firstScore = ;
$rows = [
    ["name" => "Ada", "score" => $firstScore],
    ["name" => "Linus", "score" => 3]
];
usort($rows, "by_score");
$firstName = $rows[0]["name"];
$firstValue = $rows[0]["score"];

echo "firstScore=" . $firstScore . "\n";
echo "firstName=" . $firstName . "\n";
echo "firstValue=" . $firstValue . "\n";
<?php
function by_score($left, $right) {
    return $left["score"] <=> $right["score"];
}

$firstScore = ;
$rows = [
    ["name" => "Ada", "score" => $firstScore],
    ["name" => "Linus", "score" => 3]
];
usort($rows, "by_score");
$firstName = $rows[0]["name"];
$firstValue = $rows[0]["score"];

echo "firstScore=" . $firstScore . "\n";
echo "firstName=" . $firstName . "\n";
echo "firstValue=" . $firstValue . "\n";
compare two rows The callback returns how two values should be ordered.