Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 已删除数组分组键_Php_Arrays_Sorting - Fatal编程技术网

Php 已删除数组分组键

Php 已删除数组分组键,php,arrays,sorting,Php,Arrays,Sorting,数据分组后是否可以删除密钥?现在我正在使用csv文件导入功能。我有两行相同学生但不同书籍的数据,因为我想根据学生ID对书籍进行分组 代码 这是我的分组功能,它工作正常,但数据结构与我的系统不匹配 结果就在这里 array:1 [ "ST001" => array:9 [ "student_id" => "ST001" "name" => "joe" "books" => array:2 [ 0 => array:2 [

数据分组后是否可以删除密钥?现在我正在使用csv文件导入功能。我有两行相同学生但不同书籍的数据,因为我想根据学生ID对书籍进行分组

代码

这是我的分组功能,它工作正常,但数据结构与我的系统不匹配

结果就在这里

array:1 [
  "ST001" => array:9 [
    "student_id" => "ST001"
    "name" => "joe"
    "books" => array:2 [
      0 => array:2 [
        "number" => "1"
        "description" => "The magic"
      ]
      1 => array:2 [
        "number" => "2"
        "description" => "Forest in norway"
      ]
    ]
  ]
]
预期结果

array:9 [
    "student_id" => "ST001"
    "name" => "joe"
    "books" => array:2 [
      0 => array:2 [
        "number" => "1"
        "description" => "The magic"
      ]
      1 => array:2 [
        "number" => "2"
        "description" => "Forest in norway"
      ]
    ]
  ]

我不知道如何删除
St001
数组。我确实尝试了这个
$groupu by[]=array(
),但是
书籍
数据将从数据结构中分离出来。

将内部数组分配给另一个数组

$array = $array['ST001'];
这会有帮助的

foreach($book as $item)
{
$item['books'] = ['number' => $item['number'], 'description' => $item['description'], ];
if (!isset($group_by[$item['student_id']]))
    {
    $group_by[$item['student_id']] = array(
        'student_id' => $item['student_id'],
        'name' => $item['name'],
    );
    }

$group_by[$item['student_id']]['books'][] = $item['books'];
}

// remove key and get only value as you want

print_r(array_values($group_by));

如果我不理解你的问题,我认为你的代码是正确的。因为如果你有例如ST002,你可以将两个数据收集到一个数组中,比如$group\U by['ST001']=>array with data$group\U by['ST002']=>array with data.Hm,
$group\U by[$item['student\U id']]
你在这里设置了它,你不再需要它了吗?@Sfili_81是的……代码按预期工作。我只是想找到一种方法来删除该键,以便与我的系统匹配。@kerbholz更正如果你删除了它,如果你有多个学生id会怎么样?
foreach($book as $item)
{
$item['books'] = ['number' => $item['number'], 'description' => $item['description'], ];
if (!isset($group_by[$item['student_id']]))
    {
    $group_by[$item['student_id']] = array(
        'student_id' => $item['student_id'],
        'name' => $item['name'],
    );
    }

$group_by[$item['student_id']]['books'][] = $item['books'];
}

// remove key and get only value as you want

print_r(array_values($group_by));