按PHP中的值对多维数组进行分组

Har*_*rup 2 php multidimensional-array data-structures

我有一个数组,其中包含如下数据,

$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");
Run Code Online (Sandbox Code Playgroud)

数组包含类和学生ID,我想将这个数组分组,以便根据类进行分组,

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"
            )
    )

 )
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码是,

$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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我有用,但有没有更好的解决方案,或任何PHP内置函数这样做?

dec*_*eze 7

$class_array = array();
foreach ($students_array as $sa) {
    $class_array[$sa['class']][] = array('sid' => $sa['sid']);
}
Run Code Online (Sandbox Code Playgroud)

  • 不会.如果尚未定义,PHP将简单地创建子阵列. (2认同)