PHP anonymous functions

in #php5 years ago

An anonymous function, as its name implies, is nothing more than a function that has no name and that can be used as a callback allowing greater elegance and readability of source code, it is also possible to assign an anonymous function to a variable as were another data PHP type. PHP internally converts this variable in an instance of the Closure class.

Examples

  1. Let's have the following array and want to sort them using uasort
<?php
$array = array(
    'a' => 4, 
    'b' => 8, 
    'c' => -1, 
    'd' => -9, 
    'e' => 2, 
    'f' => 5, 
    'g' => 3, 
    'h' => -4
);

Before php-5.3.0 would have something like:

<?php
function compare($val1, $val2) 
{
    return $val1 == $val2 ? 0 : ($val1 < $val2 ? -1 : 1);
}

$array = array(
    'a' => 4, 
    'b' => 8, 
    'c' => -1, 
    'd' => -9, 
    'e' => 2, 
    'f' => 5, 
    'g' => 3, 
    'h' => -4
);

uasort($array, 'compare');

print_r($array);

// Result
//Array
//(
//  [d] = -9
//  [h] = -4
//  [c] = -1
//  [e] = 2
//  [g] = 3
//  [a] = 4
//  [f] = 5
//  [b] = 8
//)

As of PHP 5.3.0 using anonymous functions

<?php
$array = array(
    'a' => 4, 
    'b' => 8, 
    'c' => -1, 
    'd' => -9, 
    'e' => 2, 
    'f' => 5, 
    'g' => 3, 
    'h' => -4
);

uasort($array, function ($val1, $val2) {
    return $val1 == $val2 ? 0 : ($val1 < $val2 ? -1 : 1);
});

print_r($array);

// Result
//Array
//(
//  [d] = -9
//  [h] = -4
//  [c] = -1
//  [e] = 2
//  [g] = 3
//  [a] = 4
//  [f] = 5
//  [b] = 8
//)

Both examples produce the same result, but the second case allows a better organization and readability in source code.


Via LibreByte


Sort:  

Source
Copying/Pasting full or partial texts with adding very little original content is frowned upon by the community. Repeated copy/paste posts could be considered spam. Spam is discouraged by the community and may result in the account being Blacklisted.

If you believe this comment is in error, please contact us in #appeals in Discord.