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)
但我想创建一个我自己的功能,这可以做到这一点,这将帮助我很多,并让我更多地了解功能如何工作以及如何完成它们.
你不是要对数组进行排序,而是为了过滤它 - 感觉不同.
在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)