-2

I am trying to sort the following array with key - "name" along with caseinsensitive, Can anyone help me on this?

$result = array(
    array("name" => "Vino", "age" => 25),
    array("name" => "bino", "age" => 25),
    array("name" => "", "age" => 25)
    array("name" => "Jino", "age" => 25),
    array("name" => "Mino", "age" => 25)
) 

So output array should be as below,

    array(
        array("name" => "bino", "age" => 25),
        array("name" => "Jino", "age" => 25),
        array("name" => "Mino", "age" => 25),
        array("name" => "Vino", "age" => 25)
        array("name" => "", "age" => 25)
    )
Anand G
  • 3,130
  • 1
  • 22
  • 28
Vinoth Babu
  • 6,724
  • 10
  • 36
  • 55
  • 2
    Possible duplicate of [Sort array items in PHP so that it is not case sensitive to letters](http://stackoverflow.com/questions/7763936/sort-array-items-in-php-so-that-it-is-not-case-sensitive-to-letters) – Marcos Pérez Gude Dec 16 '15 at 12:05
  • related: http://stackoverflow.com/questions/1597736/how-to-sort-an-array-of-associative-arrays-by-value-of-a-given-key-in-php – luk2302 Dec 16 '15 at 12:05

2 Answers2

1

You can try array_multisort like this:

NOTE: The flags SORT_NATURAL & SORT_FLAG_CASE are used to make it caseinsensitive.

   <?php 

$result = array(
        array("name" => "Vino", "age" => 25),
        array("name" => "bino", "age" => 25),
        array("name" => "", "age" => 25),
        array("name" => "Jino", "age" => 25),
        array("name" => "Mino", "age" => 25)
);

$orderKey=array();
foreach($result as $key=>$data){
    $orderKey[$key]=$data['name'];
}
array_multisort($orderKey, SORT_ASC|SORT_NATURAL|SORT_FLAG_CASE, $result);
echo "<pre>";
print_r($result);
?>

OUTPUT:

Array (
    [0] => Array
        (
            [name] => 
            [age] => 25
        )

    [1] => Array
        (
            [name] => bino
            [age] => 25
        )

    [2] => Array
        (
            [name] => Jino
            [age] => 25
        )

    [3] => Array
        (
            [name] => Mino
            [age] => 25
        )

    [4] => Array
        (
            [name] => Vino
            [age] => 25
        )

)
Suchit kumar
  • 11,809
  • 3
  • 22
  • 44
0

Could do something like this:

$result = array(
   array("name" => "Vino", "age" => 25),
   array("name" => "bino", "age" => 25),
   array("name" => "", "age" => 25),
   array("name" => "Jino", "age" => 25),
   array("name" => "Mino", "age" => 25)
) 

usort($result, function($a, $b) {
    return strcasecmp($a["name"], $b["name"]);
});

OUTPUT:

Array
(
    [0] => Array
        (
            [name] => 
            [age] => 25
        )

    [1] => Array
        (
            [name] => bino
            [age] => 25
        )

    [2] => Array
        (
            [name] => Jino
            [age] => 25
        )

    [3] => Array
        (
            [name] => Mino
            [age] => 25
        )

    [4] => Array
        (
            [name] => Vino
            [age] => 25
        )

)
Epodax
  • 1,828
  • 4
  • 27
  • 32