What are some best practices for implementing a radius search based on postal codes in PHP?

When implementing a radius search based on postal codes in PHP, it's important to use a formula like the Haversine formula to calculate distances between coordinates. You will need to have a database of postal codes with their corresponding latitude and longitude values. Once you have this data, you can query the database to find postal codes within a certain radius of a given postal code.

// Function to calculate distance between two points using Haversine formula
function getDistance($lat1, $lon1, $lat2, $lon2) {
    $earthRadius = 6371; // in kilometers

    $dLat = deg2rad($lat2 - $lat1);
    $dLon = deg2rad($lon2 - $lon1);

    $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2);
    $c = 2 * atan2(sqrt($a), sqrt(1-$a));

    $distance = $earthRadius * $c;

    return $distance;
}

// Query to get postal codes within a certain radius of a given postal code
$radius = 10; // in kilometers
$givenPostalCode = '12345';
$givenLat = 40.7128; // latitude of given postal code
$givenLon = -74.0060; // longitude of given postal code

// Query database to get postal codes within the radius
$query = "SELECT postal_code, latitude, longitude FROM postal_codes";
$result = $conn->query($query);

$nearbyPostalCodes = [];
while ($row = $result->fetch_assoc()) {
    $distance = getDistance($givenLat, $givenLon, $row['latitude'], $row['longitude']);
    if ($distance <= $radius) {
        $nearbyPostalCodes[] = $row['postal_code'];
    }
}

// Output nearby postal codes
foreach ($nearbyPostalCodes as $postalCode) {
    echo $postalCode . "<br>";
}