Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> CSV rozbicie tabeli w pętli i dodanie wartości
winiar789
post 24.06.2019, 15:20:28
Post #1





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

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


Czołem drodzy przyjaciele,

Mam o to sobie CSV :

Z661-05639;PLN; Exchange Price; 235.38
Z661-05639;PLN; Stock Price; 215.38

i to w array mam sobie tak:

  1.  
  2.  
  3. [12] => Array
  4. (
  5.  
  6. [0] => Z661-05639
  7. [1] => PLN
  8. [2] => Exchange Price
  9. [3] => 235.38
  10.  
  11. )
  12.  
  13. [13] => Array
  14. (
  15.  
  16. [0] => Z661-05639
  17. [1] => PLN
  18. [2] => Stock Price
  19. [3] => 215.38
  20.  
  21. )
  22.  
  23.  


i co chce zrobić , chce to sobie połączyć o tak -


  1.  
  2.  
  3. [12] => Array
  4. (
  5.  
  6. [0] => Z661-05639
  7. [1] => PLN
  8. [2] => Exchange Price
  9. [3] => 235.38
  10. [4] => Stock Price
  11. [5] => 215.38
  12.  
  13.  
  14. )
  15.  



Będę wdzięczny za pomoc exclamation.gif biggrin.gif smile.gif

Go to the top of the page
+Quote Post
SmokAnalog
post 24.06.2019, 15:47:32
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Chcesz pogrupować po zawartości pierwszej kolumny? Czy ten identyfikator może być czymś innym?

Format danych, który chcesz osiągnąć jest mało praktyczny, chyba że chcesz jedynie zapisać to w innym CSV.
Go to the top of the page
+Quote Post
winiar789
post 24.06.2019, 16:02:43
Post #3





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

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


Dokładnie tak - ja chce dokładnie stworzyć kolejny CSV w którym te dane są pogrupowane w takiej postaci nic więcej - a że robi się to ręcznie wpadłem na pomysł zautomatyzowania tego.
Go to the top of the page
+Quote Post
SmokAnalog
post 24.06.2019, 16:05:20
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Czyli zawsze liczba elementów z takim samym identyfikatorem będzie taka sama?
Go to the top of the page
+Quote Post
winiar789
post 24.06.2019, 16:11:22
Post #5





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

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


Tak , idetyfikatorem jest : [0] => Z661-05639
i zawsze będzie Exchange Price i Stock Price dla numeru Z661-05639 itd. dla innych
Go to the top of the page
+Quote Post
Pyton_000
post 24.06.2019, 19:01:11
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Najprościej jak się da:

Kod
<?php

$output = [];
foreach($data as $row) {
    $output[$row[0]][0] = $row[0];
    $output[$row[0]][1] = $row[1];
    $output[$row[0]][] = $row[2];
    $output[$row[0]][] = $row[3];
}

var_dump($output);
Go to the top of the page
+Quote Post
SmokAnalog
post 24.06.2019, 19:05:57
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Wersja kompaktowa:

  1. $data = array_reduce($data, function ($result, $row) {
  2. return array_merge($result, [$row[0] => isset($result[$row[0]]) ? array_merge($result[$row[0]], array_slice($row, 2)) : $row]);
  3. }, []);
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: 29.03.2024 - 10:38