Удален массив сгруппированных ключей - PullRequest
0 голосов
/ 22 февраля 2019

Можно ли удалить ключ после группировки данных?Сейчас я работаю с функцией импорта файла CSV.У меня есть две строки данных с одним и тем же учеником, но разными книгами, потому что я хочу сгруппировать книги на основе идентификатора учащегося.

Код

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'];

}

Это моя функция группировки, она работала отлично, как и ожидалось, но структура данных не соответствует моей системе

Результат здесь

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.Я пробовал это $group_by[] = array(, но данные books будут выходить из структуры данных.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Это поможет здесь

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));
0 голосов
/ 22 февраля 2019

Назначить внутренний массив другому массиву.

$array = $array['ST001'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...