如何在PHP中创建一个函数,根据其中一个键对数组进行排序

Ale*_*drw 2 php arrays sorting function

我有以下数组:

$class = array(
        'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
        'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
        'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
        'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
        'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个函数,可以根据其中一个键对这个数组进行排序,例如我希望函数从数组中排序并输出所有的男性('sex'=>'m') .

我设法做到这一点:

foreach ($class as $val) {
    if ($val['sex'] == 'm')
    echo $val['nume'].' '.$val['prenume'].'<br/>';
}
Run Code Online (Sandbox Code Playgroud)

但我想创建一个我自己的功能,这可以做到这一点,这将帮助我很多,并让我更多地了解功能如何工作以及如何完成它们.

Alm*_* Do 9

你不是要数组进行排序,而是为了过滤它 - 感觉不同.

在PHP中,有array_filter()来执行此操作.如果要创建灵活的功能,可以这样做:

function filterArray($data, $key, $value)
{
   return array_filter($data, function($row) use ($key, $value)
   {
      return $row[$key]==$value;
   });
}

$class = array(
        'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
        'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
        'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
        'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
        'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);

$result = filterArray($class, 'sex', 'm');
Run Code Online (Sandbox Code Playgroud)