0

I have a php array like below,

$array = array(
array(
 'mark' => 10,
 'name' => 'name 1',
),

array(
 'mark' => 15,
 'name' => 'name 2',
),
-------------------
-----------------
);

I need to get the row with minimum mark.

I can get the lowest mark as like bellow,

$numbers = array_map(function($array) {
return $details['mark'];
 }, $array);
$min = min($numbers);

But i don't know how to get the entire row.

Shijin TR
  • 7,516
  • 10
  • 55
  • 122

3 Answers3

3
uasort($array, function($a, $b) {
    if ($a['mark'] == $b['mark']) {
        return 0;
    }
    return ($a['mark'] < $b['mark']) ? -1 : 1;
});

$min = current($array);
$max = end($array);
Mihai Matei
  • 24,166
  • 5
  • 32
  • 50
0

Why to use so long codes when PHP already has what You need?
Use this one-liners.
Compact (short), fast (because we collected columns at first), native (it's builtin):

$marks = array_column($array, 'mark'); // return "mark"s as array keeping keys of $array
$minimal_mark = min($marks); // gets minimal value
$minimal_mark_key = array_search($minimal_mark, marks); // searches for $minimal_mark value in $marks and returns array key
$minimal_mark_row = $array[$minimal_mark_key]; // gets element from array by key
num8er
  • 18,604
  • 3
  • 43
  • 57
-2

Try this :

$array = array(

array(
 'mark' => 10,
 'name' => 'name 1',
),

array(
 'mark' => 15,
 'name' => 'name 2',
)
);

$numbers = array_map(function($array) {
return $array['mark'];
 }, $array);

$min = min($numbers);
Happy Coding
  • 2,517
  • 1
  • 13
  • 24