I write an array like this:
$tags = [
"Channel1\n" . 26210,
"Channel2\n" . 7896 . "\n---------------",
"Channel3\n" . 5035 . "\n---------------",
"Channel4\n" . 25794 . "\n---------------",
"Channel5\n" . 91143 . "\n---------------",
"Channel6\n" . 42075 . "\n---------------",
"Channel7\n" . 11815 . "\n---------------",
"Channel8\n" . 180 . "\n---------------",
"Channel9\n" . 171 . "\n---------------",
"Channel10\n" . 82106 . "\n---------------"
];
Now I use sort()
function to sort this array, But I need it sorted only by those integers that display between two strings (specific part of an array). For example: Channel9 - 171 , Channel8 - 180 ...
I would probably get the numbers in an array and sort on that:
$nums = preg_filter('/[^\n][^\d]+/', '', $tags); //or preg_replace()
array_multisort($nums, $tags);
A slightly longer approach:
usort($tags, function($a, $b) {
$a = explode("\n", $a)[1];
$b = explode("\n", $b)[1];
if ($a == $b) { return 0; }
return ($a < $b) ? -1 : 1;
});