w3resource

PHP Array Exercises : Function to sort subnets

PHP Array: Exercise-21 with Solution

Write a PHP function to sort subnets.

Sample Solution:

PHP Code:

<?php
function sort_subnets ($x, $y) {
    $x_arr = explode('.', $x);
    $y_arr = explode('.', $y);
    foreach (range(0,3) as $i) {
        if ( $x_arr[$i] < $y_arr[$i] ) {
            return -1;
        }
        elseif ( $x_arr[$i] > $y_arr[$i] ) {
            return 1;
        }
    }
    return -1;
}

$subnet_list = 
array('192.169.12',
'192.167.11',
'192.169.14',
'192.168.13',
'192.167.12',
'122.169.15',
'192.167.16'
);
usort($subnet_list, 'sort_subnets');
print_r($subnet_list);
?>

Sample Output:

Array                                                       
(                                                           
    [0] => 122.169.15                                       
    [1] => 192.167.11                                       
    [2] => 192.167.12                                       
    [3] => 192.167.16                                       
    [4] => 192.168.13                                       
    [5] => 192.169.12                                       
    [6] => 192.169.14                                       
) 

Flowchart:

Flowchart: PHP - Sort subnets

PHP Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a PHP function to sort an array according to another array acting as a priority list.
Next: Write a PHP script to sort the following array by the day (page_id) and username.

What is the difficulty level of this exercise?



PHP: Tips of the Day

PHP: Convert one date format into another in PHP

The second parameter to date() needs to be a proper timestamp (seconds since January 1, 1970). You are passing a string, which date() can't recognize.

You can use strtotime() to convert a date string into a timestamp. However, even strtotime() doesn't recognize the y-m-d-h-i-s format.

PHP 5.3 and up

Use DateTime::createFromFormat. It allows you to specify an exact mask - using the date() syntax - to parse incoming string dates with.

PHP 5.2 and lower

You will have to parse the elements (year, month, day, hour, minute, second) manually using substr() and hand the results to mktime() that will build you a timestamp.

But that's a lot of work! I recommend using a different format that strftime() can understand. strftime() understands any date input short of the next time joe will slip on the ice. for example, this works:

$old_date = date('l, F d y h:i:s');         // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);

Ref : https://bit.ly/33QzKPG