I have the following array:
$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)
);
What I would like to do is to create a function that can sort through this array based on one of its keys, for example I want the function to sort and output all the males ('sex' => 'm') from the array.
I have managed to do this with:
foreach ($class as $val) {
if ($val['sex'] == 'm')
echo $val['nume'].' '.$val['prenume'].'<br/>';
}
But I want to create a function of my own that can do just this, which would help me a lot and give me more insight on how functions work and how they should be done.
You're looking not for sorting your array, but for filtering it - feel the difference.
In PHP, there's array_filter() to do this. If you want to create flexible function, you can act like this:
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');
Try this:
<?php
function array_sort($array,$search_key,$search_val){
$re_array = array();
foreach($array as $value){
if($value[$search_key] == $search_val)
$re_array[] = $value;
}
return $re_array;
}
$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)
);
$data = array_sort($class,'sex','m');
echo "<pre>";
print_r($data);
echo "</pre>";
exit;
?>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With