Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dzielenie tablic?
L0k0
post 27.02.2014, 12:09:02
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


Witam!

Mam taka sytuację:

mam dwie tabele 1:m (kupony i zdarzenia)

Efektem selekta
  1. DB::SELECT('*')->from('kupon')
  2. ->join('zdarzenia', 'left')
  3. ->on('kupon.id', '=', 'zdarzenia.id_kuponu')
  4. ->execute()->as_array();


jest:

  1. array(2) (
  2. 0 => array(13) (
  3. "id" => string(1) "1"
  4. "data_godzina" => string(16) "2014-02-25 13:49"
  5. "bukmacher" => string(6) "Bet365"
  6. "rozliczenie" => string(1) "0"
  7. "stawka" => string(3) "100"
  8. "ako" => string(1) "3"
  9. "nazwa" => string(20) "Arsenal - Manchester"
  10. "typ" => string(9) "under 2.5"
  11. "kurs" => string(1) "2"
  12. "dyscyplina" => string(1) "2"
  13. "data_zdarzenia" => string(16) "2014-02-28 13:45"
  14. "analiza" => string(29) "Warto postawić na gospodarzy"
  15. "id_kuponu" => string(1) "1"
  16. )
  17. 1 => array(13) (
  18. "id" => string(1) "2"
  19. "data_godzina" => string(16) "2014-02-25 13:49"
  20. "bukmacher" => string(6) "Bet365"
  21. "rozliczenie" => string(1) "0"
  22. "stawka" => string(3) "100"
  23. "ako" => string(1) "3"
  24. "nazwa" => string(17) "Bayern - Freiburg"
  25. "typ" => string(1) "1"
  26. "kurs" => string(1) "1"
  27. "dyscyplina" => string(1) "2"
  28. "data_zdarzenia" => string(16) "2014-02-28 15:30"
  29. "analiza" => string(37) "Warto postawić na Bayern, bo ciśnie"
  30. "id_kuponu" => string(1) "1"
  31. )
  32. )


Problem polega na tym, że dane odnośnie kuponu chcę wykorzystać w jednym miejscu, natomiast same zdarzenia - w innym. Zwracane tablice zawierają jednak połączenie kuponu i jednego ze zdarzeń.

Ma ktoś jakiś pomysł jak to 'rozdzielić' , by móc tego użyć mniej więcej tak:

  1. foreach($kupon as $row) {
  2. foreach $zdarzenie as $row {}
  3. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post 27.02.2014, 12:12:45
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to musisz w php pogrupowac te dane. Tutaj pisalem jak:
http://nospor.pl/grupowanie-wynikow.html


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

"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
L0k0
post 27.02.2014, 13:51:24
Post #3





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


Robię wg tego tutoriala i jedna rzecz mi nie gra:

  1. $kupon = DB::select('*')->from('kupon')
  2. ->join('zdarzenia', 'left')
  3. ->on('kupon.id', '=', 'zdarzenia.id_kuponu')
  4. ->execute()->as_array();
  5.  
  6. // echo Debug::vars($kupon);
  7.  
  8. $categories = array();
  9.  
  10. foreach($kupon as $row)
  11. {
  12. $kid = $row['id_kuponu'];
  13.  
  14. if(!isset($categories[$kid]))
  15. {
  16. $kupon = array('data_godzina' => $row['data_godzina'],
  17. 'bukmacher' => $row['bukmacher'],
  18. 'rozliczenie' => $row['rozliczenie'],
  19. 'stawka' => $row['stawka'],
  20. 'ako' => $row['ako']
  21. );
  22. $categories[$kid]['kupon'] = array($kupon);
  23. }
  24.  
  25. if(!empty($row['nazwa']))
  26. {
  27. $categories[$kid]['zdarzenia'][] = array('nazwa' => $row['nazwa'],
  28. 'typ' => $row['typ'],
  29. 'kurs' => $row['kurs'],
  30. 'dyscyplina' => $row['dyscyplina'],
  31. 'analiza' => $row['analiza'],
  32. );
  33. }
  34. }


  1. echo Debug::vars($categories);


daje mi:

  1. array(1) (
  2. 1 => array(2) (
  3. "kupon" => array(1) (
  4. 0 => array(5) (
  5. "data_godzina" => string(16) "2014-02-25 13:49"
  6. "bukmacher" => string(6) "Bet365"
  7. "rozliczenie" => string(1) "0"
  8. "stawka" => string(3) "100"
  9. "ako" => string(1) "3"
  10. )
  11. )
  12. "zdarzenia" => array(2) (
  13. 0 => array(5) (
  14. "nazwa" => string(20) "Arsenal - Manchester"
  15. "typ" => string(9) "under 2.5"
  16. "kurs" => string(1) "2"
  17. "dyscyplina" => string(1) "2"
  18. "analiza" => string(29) "Warto postawić na gospodarzy"
  19. )
  20. 1 => array(5) (
  21. "nazwa" => string(17) "Bayern - Freiburg"
  22. "typ" => string(1) "1"
  23. "kurs" => string(1) "1"
  24. "dyscyplina" => string(1) "2"
  25. "analiza" => string(37) "Warto postawić na Bayern, bo ciśnie"
  26. )
  27. )
  28. )
  29. )


I wygląda to jak w tutku ale nie mogę się już tak odwołać jak w nim, muszę jeszcze [1] dodać by znalazło 'kupon'. Coś zrobiłem źle?

  1. <div class='section_container'>
  2. <div class='section_item_container'>
  3. <?php foreach($kupon[1]['kupon'] as $row => $value): ?>
  4. <?php echo Debug::vars($value); ?>
  5. <div class='section_coupon_container'>
  6. <div class='coupon_container_top'><?php // echo $value['data_godzina'] . ' ' . $value['bukmacher']; ?></div>
  7. <div class='coupon_container_middle'>44444</div>
  8. <div class='coupon_container_bottom'>oooooo</div>
  9. </div>
  10. <div class='section_comments_container'>
  11. Komenty
  12. </div>
  13. <?php endforeach; ?>
  14. </div>
  15. </div>
Go to the top of the page
+Quote Post
nospor
post 27.02.2014, 13:55:48
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie: $categories[$kid]['kupon'] = array($kupon);
a: $categories[$kid] = $kupon;


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

"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
L0k0
post 27.02.2014, 14:11:34
Post #5





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


Znowu ja... Rzeczywiście powyższa zmiana mi pomogła z pierwszą tablicą ale analogiczną sytuację mam z drugą, tj.:

  1. $categories[$kid]['zdarzenia'][] = array('nazwa' => $row['nazwa'],
  2. 'typ' => $row['typ'],
  3. 'kurs' => $row['kurs'],
  4. 'dyscyplina' => $row['dyscyplina'],
  5. 'analiza' => $row['analiza'],


  1. <?php foreach($kupon[1]['zdarzenia'] as $zdarzenie):?>
  2. <?php echo $zdarzenie['nazwa']; ?>
  3. <?php endforeach; ?>


Jak zrobić, by tego [1] nie było?
Go to the top of the page
+Quote Post
nospor
post 27.02.2014, 14:20:03
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Motasz niesamowicie.... zobacz jak wyglada teraz wygenerowana tablica.


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

"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
L0k0
post 27.02.2014, 14:26:45
Post #7





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


  1. array(1) (
  2. 1 => array(6) (
  3. "data_godzina" => string(16) "2014-02-25 13:49"
  4. "bukmacher" => string(6) "Bet365"
  5. "rozliczenie" => string(1) "0"
  6. "stawka" => string(3) "100"
  7. "ako" => string(1) "3"
  8. "zdarzenia" => array(2) (
  9. 0 => array(5) (
  10. "nazwa" => string(20) "Arsenal - Manchester"
  11. "typ" => string(9) "under 2.5"
  12. "kurs" => string(1) "2"
  13. "dyscyplina" => string(1) "2"
  14. "analiza" => string(29) "Warto postawić na gospodarzy"
  15. )
  16. 1 => array(5) (
  17. "nazwa" => string(17) "Bayern - Freiburg"
  18. "typ" => string(1) "1"
  19. "kurs" => string(1) "1"
  20. "dyscyplina" => string(1) "2"
  21. "analiza" => string(37) "Warto postawić na Bayern, bo ciśnie"
  22. )
  23. )
  24. )
  25. )
Go to the top of the page
+Quote Post
nospor
post 27.02.2014, 14:28:52
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja to wiem.... to ty sie miales przyjrzec a nie ja... tongue.gif

Masz tu dwu wymiarową tablice. Czyli mają byc dwa foreach....
  1. foreach($kupon as $krow){
  2. foreach($krow['zdarzenia'] as $zdarzenie) {
  3. echo $zdarzenie['nazwa'];
  4. }
  5.  
  6. }
Powód edycji: [nospor]:


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

"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
L0k0
post 27.02.2014, 14:33:49
Post #9





Grupa: Zarejestrowani
Postów: 161
Pomógł: 4
Dołączył: 18.03.2011

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


No tak, nie zauważyłem, że drugi forach jest robiony na podstawie pierwszego i drugi zaczynałem 'od nowa'.

Dzięki smile.gif
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.07.2025 - 21:25