Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie CSV - Array
winiar789
post 17.02.2020, 15:37:38
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 15.11.2011

Ostrzeżenie: (0%)
-----


Dzień dobry cześć i czołem,

Mam sobie dwa pliki CSV - duże ( mają sporo danych )

W jednym pliku csv kontrahent

id_kontrahent;nazwa_kontrahenta;nazwa_handlowca

Zaś w drugim mam sprzedaż - id kontrahenta powiela się - każdego dnia plik rośnie ze względu na sprzedaż produktu dla kontrahenta

id_kontrahenta;data;netto;brutto

Teraz chciałbym uzyskać sumę sprzedaży dla danego handlowca vs kontrahent ( każdy kontrahent ma przydzielonego handlowca ).

Czyli handlowiec: Kowalski , Firma: XYZ, Rok: 2020, Sprzedaż: 1000 tys.

Na początku zrobiłem:

  1.  
  2. forach($kontrahent as $k => $v) {
  3. forach($sprzedaz as $kk => $vv) {
  4.  
  5. if($v[0]==$vv[0]) {
  6.  
  7.  
  8.  
  9. }
  10.  
  11.  
  12. }
  13. }
  14.  
  15.  


Ale już na tym etapie danych jest tyle że wywala błąd Memory , czy jest jakiś sposób na szybsze połączenie Array ?
Wiem że jest array_merge() ale przy csv wywala mi błąd

Argument #1 is not an array in ...

Używam class do CSV new CsvIterator.









Go to the top of the page
+Quote Post
dublinka
post 17.02.2020, 16:15:29
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 52
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----




Troche glupota jest robienie tablic z duzych plikow. Po drugie co to za f. FORACH ?
Powód edycji: [nospor]: no nie wstawiaj jako cytat calego posta. Jaki tego sens??
Go to the top of the page
+Quote Post
nospor
post 17.02.2020, 16:35:42
Post #3





Grupa: Moderatorzy
Postów: 35 209
Pomógł: 5918
Dołączył: 27.12.2004




Ten foeach w foreach jest totalnie bez sensu.

Najpierw wczytaj sobie do tablicy ten pierwszy CSV z kontrahentami i handlowcami. Zbuduj sobie z niego ladna tablica by miec tam tablice po czym bedziesz grupowac
Nastepnie zacznij czytaj drugi CSV, LINIA po LINII a nie caly od razu. I tak linia po linii wypelniaj sobie te zbudowana wczesniej tablice o odpowiednie SUMY. I juz.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
winiar789
post 17.02.2020, 16:56:42
Post #4





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 15.11.2011

Ostrzeżenie: (0%)
-----


Ok zrobiłem to trochę inaczej dla ułatwienia i pobrałem sobie inaczej dane do CSV teraz mam jeden plik wynikowy:

nazwa_kontrahenta;handlowiec;data;netto;brutto - oczywiscie nazwa kontrahenta mi sie pobiera wielokrotnie

np:

AAA;KTOS;2007;111;1123
AAA;KTOS;2008;111;1123

itd.


Ale mam teraz inny problem nie wiem jak złączyć firmę kwoty i daty.

Końcowy raport ma wyglądać tak

Handlowiec: KTOS
FIRMA: AAA

Dzienny: rok 2017: 55zł Rok 2018: 66zł Rok 2019: 99zł
Miesięczny: .....
Roczny: .....


Obrót dzienny w dniu 17 lutego pokazuje obrót z 17 lutego w tym roku oraz w poprzenich 2016, 2017, 2018 itd.
W ujęciu miesięcznym pokazuje obrót od 1 lutego do 17 lutego w tym roku oraz w poprzednich
W ujęciu rocznym pokazuje obrót od 1 stycznia do 17 lutego w tym roku oraz w poprzednich.



Go to the top of the page
+Quote Post
Pyton_000
post 18.02.2020, 09:07:04
Post #5





Grupa: Zarejestrowani
Postów: 7 896
Pomógł: 1386
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


zaimportuj sobie csv do bazy sqlite i mozesz sobie dzialac.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.04.2020 - 10:40