Skip to content
Advertisement

Sort array by trailing letters [closed]

I have an array like so (generated from an API):

    [18] => 3107SkincareL
    [19] => 3INAL
    [20] => 3M
    [21] => 3rdRockEssentialsFL
    [22] => 4BeautyGroupL
    [23] => 4EVERMAGICCOSMETICSL

As you can see, some of the entries feature a trailing “L” or “FL”. I would like to sort everything ending with “L” into a group and everything that ends with “FL” into a group and everything else in another group.

Is there any possible way to do this in PHP?

Thank you very much!

Advertisement

Answer

This should be what you are looking for:

<?php
$input = [
  18 => "3107SkincareL", 
  19 => "3INAL", 
  20 => "3M", 
  21 => "3rdRockEssentialsFL", 
  22 => "4BeautyGroupL", 
  23 => "4EVERMAGICCOSMETICSL", 
];
$output = [];
array_walk($input, function($entry) use (&$output) {
    if ("FL" == substr($entry, -2)) {
        $output["FL"][] = $entry;
    } else if ("L" == substr($entry, -1)) {
        $output["L"][] = $entry;
    } else {
        $output["?"][] = $entry;        
    }
});
print_r($output);

The output obviously is:

Array
(
    [L] => Array
        (
            [0] => 3107SkincareL
            [1] => 3INAL
            [2] => 4BeautyGroupL
            [3] => 4EVERMAGICCOSMETICSL
        )
    [FL] => Array
        (
            [0] => 3rdRockEssentialsFL
        )
    [?] => Array
        (
            [0] => 3M
        )
)
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement