Skip to content
← Back to Snippets
Code

Spaceship Operator (<=>)

Uses the spaceship operator inside a named comparison function for sorting numeric priorities.

Purpose

Uses the spaceship operator inside a named comparison function for sorting numeric priorities.

Snippet details

ContextComparisonLevelProductionCopy-and-paste statusMarked safe after review.

Categories

  • Forms and Validation

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */

/**
 * Spaceship Operator (<=>).
 *
 * Purpose:
 * Sorts rows by numeric priority using the spaceship comparison operator.
 *
 * @param array $first First row.
 * @param array $second Second row.
 * @return int Sort comparison result.
 */
function ogSnippetSpaceshipPriorityCompare(array $first, array $second): int {
	$first_priority = 0;
	$second_priority = 0;

	if (isset($first['priority']) === true) {
		$first_priority = (int) $first['priority'];
	}

	if (isset($second['priority']) === true) {
		$second_priority = (int) $second['priority'];
	}

	return $first_priority <=> $second_priority;
}

/**
 * @param array $missions Mission rows.
 * @return array Sorted mission rows.
 */
function ogSnippetSpaceshipOperator(array $missions): array {
	usort($missions, 'ogSnippetSpaceshipPriorityCompare');

	return $missions;
}

$missions = ogSnippetSpaceshipOperator(array(
	array('name' => 'Acheron sweep', 'priority' => 30),
	array('name' => 'Tycho repair', 'priority' => 10)
));

echo 'First priority mission: '.$missions[0]['name'];