$arr = array(
array('name' => 'english', 'activity' => 'activ A', 'payment' => 20),
array('name' => 'english', 'activity' => 'activ B', 'payment' => 25),
array('name' => 'english', 'activity' => 'activ c', 'payment' => 30),
array('name' => 'biology', 'activity' => 'activ d', 'payment' => 50),
array('name' => 'biology', 'activity' => 'activ e', 'payment' => 60),
);
$different_names = get_different_names($arr);
echo "Name Activity Payment";
display($different_names, $arr);
function display($different_names, $arr) {
foreach($different_names as $name) {
foreach($arr as $row) {
if($row['name'] == $name)
echo "</br> {$row['name']} {$row['activity']} {$row['payment']} ";
}
}
}
function get_different_names($arr) {
$different_names = array();
foreach($arr as $row) {
if(!in_array($row['name'], $different_names))
$different_names[] = $row['name'];
}
return $different_names;
}
p.s.
Zebi Rajpot `s solution is good. But I dont think it will produce the desired output if the result is not sorted by name.