Laravel group by array - недопустимое смещение строки - PullRequest
0 голосов
/ 20 февраля 2019

Я уже преобразовал CSV-файл в массив и сгруппировал данные массива с помощью некоторого ключа.Я определил функцию groupBy для обработки данных массива.Тем не менее, я сталкиваюсь с этой ошибкой и не уверен, какая часть идет не так.

Код: групповая функция

public function group($key, $item) {
        $result = array();

        foreach($item as $val) {
                $result[$val[$key]][] = $val; <--error $key

        }

        return $result;
    }

Функция преобразования данных.

public function saveNewSale()
    { 
        foreach (array_chunk($items, $chunk_size) as $chunk) {
                $cleaned_items = [];

                foreach ($chunk as $item) {
                    //Data Transformation

                    //call groupby function
                    $byGroup = $this->group('ref_num', $item);

                    array_push($cleaned_items, $item);

                }

Это мой массив

array:2 [
  0 => array:13 [
    "ref_num" => "INV699"
    "payment_term" => array:2 [
      "id" => 1
      "name" => "Cash"
    ]

    "items" => array:1 [
      0 => array:8 [
        "code" => "3MVR0003"
        "description" => "3M Vinyl 
        "tax_value" => 0.06
        "qty" => 1
        "unit" => 1
        "price" => 10
        "total" => 212
        "total_tax" => 12
      ]
    ]
    "terms" => array:1 [
      0 => array:2 [
        "date" => "2019-02-20"
        "amount" => 200
      ]
    ]
  ]

  1 => array:13 [
    "ref_num" => "INV699"
    "payment_term" => array:2 [
      "id" => 1
      "name" => "Cash"
    ]

    "items" => array:1 [
      0 => array:8 [
        "code" => "sony"
        "description" => "3xperia"
        "tax_value" => 0.06
        "qty" => 1
        "unit" => 1
        "price" => 10
        "total" => 212
        "total_tax" => 12
      ]
    ]
    "terms" => array:1 [
      0 => array:2 [
        "date" => "2019-02-20"
        "amount" => 200
      ]
    ]
  ]
]

Мне нужно сгруппировать эти два массива на основе ref_num.

1 Ответ

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

Я переписываю твой код в saveNewSale и удаляю group функцию

public function saveNewSale($items)
{ 
    $groupedArray = [];

    foreach (array_chunk($items, 2) as $chunk) 
    {
        foreach($chunk as $entry) {
            $groupedArray[$entry['ref_num']][]= $entry; 
        }
    }
    return $groupedArray;
}

здесь работает пример

...