3v4l.org

run code in 300+ PHP versions simultaneously
<?php $objects = [ (object)["name" => "Name1", "key" => "key1"], (object)["name" => "Name2", "key" => "key2"], (object)["name" => "Name3", "key" => "key3"], ]; $keys = ["key3", "key1"]; $lookup = array_flip($keys); $fallback = count($keys); usort($objects, function($a, $b) use ($lookup, $fallback) { return ($lookup[$a->key] ?? $fallback) <=> ($lookup[$b->key] ?? $fallback); }); var_export($objects);

preferences:
34.14 ms | 407 KiB | 5 Q