У меня есть массив, который содержит следующие данные:
$students_array = array();
$students_array[] = array("class" => 1, "sid" => "s00123");
$students_array[] = array("class" => 2, "sid" => "s00456");
$students_array[] = array("class" => 1, "sid" => "s008765");
$students_array[] = array("class" => 1, "sid" => "s008987");
$students_array[] = array("class" => 3, "sid" => "s008789");
$students_array[] = array("class" => 3, "sid" => "s008543");
массив содержит идентификатор класса и студента, я хочу сгруппировать этот массив так, чтобы он был сгруппирован по классу,
Array
(
[1] => Array
(
[0] => Array
(
[sid] => "s00123"
)
[1] => Array
(
[sid] => "s008765"
)
[2] => Array
(
[sid] => "s008987"
)
)
[2] => Array
(
[0] => Array
(
[sid] => "s00456"
)
)
[3] => Array
(
[0] => Array
(
[sid] => "s008789"
)
[1] => Array
(
[sid] => "s008543"
)
)
)
Код, который я использую,
$class_array = array();
foreach($students_array as $sa) {
if(isset($class_array[$sa['class']])) {
$inner_array = array();
$inner_array["sid"] = $sa['sid'];
$class_array[$sa['class']][]= $inner_array;
} else {
$inner_array = array();
$inner_array["sid"] = $sa['sid'];
$class_array[$sa['class']][]= $inner_array;
}
}
, который работает для меня, но есть ли лучшее решение или какие-либо встроенные функции PHP для этого?