Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pominięcie tych samych elementów, Pominięcie przy dodawania do tablicy tych samych elementów
arzach
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Witam

Mam taki kod
  1. $data['sezon_name'] = 'Sezon 2008,Sezon 2009,Sezon 2010,Sezon 2010,Sezon 2010,Sezon 2010';
  2. $data['zespol_name'] = 'BMW,BMW,Renault,BMW,Toyota,BMW';
  3. $data['zespol_id'] = '3,3,2,3,1,3';
  4.  
  5. $kierowca = array();
  6. $sezon_name = explode(",", $data['sezon_name']);
  7. $zespol_name = explode(",", $data['zespol_name']);
  8. $zespol_id = explode(",", $data['zespol_id']);
  9.  
  10. for ($i=0;$i<count($sezon_name);$i++)
  11. {
  12. if(!isset($kierowca[$i]['sezon_name'][$sezon_name[$i]]))
  13. {
  14. $kierowca[$i] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array());
  15. }
  16. $kierowca[$i]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]);
  17. }

I mimo to dodaje do tablicy te same nazwy sezonów. Proszę o pomoc jak zrobić by nie dodawało tych samych elementów.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


zbieraj nazwy sezonów do oddzielnej tablicy i sprawdzaj funkcją in_array() czy taka nazwa została już dodana, jeżeli nie to wtedy dodajesz wpis



Ten post edytował tehaha 8.08.2010, 15:34:07
Go to the top of the page
+Quote Post
gothye
post
Post #3





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


array_unique
Go to the top of the page
+Quote Post
arzach
post
Post #4





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Ja musze mieć wszystko w jednej tablicy a nie w kilku
I z tego kodu
  1. $data['sezon_name'] = 'Sezon 2008,Sezon 2009,Sezon 2010,Sezon 2010,Sezon 2010,Sezon 2010';
  2. $data['zespol_name'] = 'BMW,BMW,Renault,BMW,Toyota,BMW';
  3. $data['zespol_id'] = '3,3,2,3,1,3';
  4.  
  5. $kierowca = array();
  6. $sezon_name = explode(",", $data['sezon_name']);
  7. $zespol_name = explode(",", $data['zespol_name']);
  8. $zespol_id = explode(",", $data['zespol_id']);
  9.  
  10. for ($i=0;$i<count($sezon_name);$i++)
  11. {
  12. if(!isset($kierowca[$i]['sezon_name'][$sezon_name[$i]]))
  13. {
  14. $kierowca[$i] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array());
  15. }
  16. $kierowca[$i]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]);
  17. }

chciałbym by wyszła taka tablica
Kod
Array
(
    [0] => Array
        (
            [sezon_name] => Sezon 2008
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [1] => Array
        (
            [sezon_name] => Sezon 2009
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [2] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
            [0] => Array
                        (
                            [zespol_id] => 2
                            [zespol_name] => Renault
                        )
            [1] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )
            [2] => Array
                        (
                            [zespol_id] => 1
                            [zespol_name] => Toyota
                        )

                )

        )


)


A obecnie kod generuje taką tablice
Kod
Array
(
    [0] => Array
        (
            [sezon_name] => Sezon 2008
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [1] => Array
        (
            [sezon_name] => Sezon 2009
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [2] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 2
                            [zespol_name] => Renault
                        )

                )

        )

    [3] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [4] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 1
                            [zespol_name] => Toyota
                        )

                )

        )

    [5] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

)


Ten post edytował arzach 8.08.2010, 15:40:13
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1. <?php
  2.  
  3. $data['sezon_name'] = 'Sezon 2008,Sezon 2009,Sezon 2010,Sezon 2010,Sezon 2010,Sezon 2010';
  4. $data['zespol_name'] = 'BMW,BMW,Renault,BMW,Toyota,BMW';
  5. $data['zespol_id'] = '3,3,2,3,1,3';
  6.  
  7. $kierowca = array();
  8. $seasons = array();
  9. $sezon_name = explode(",", $data['sezon_name']);
  10. $zespol_name = explode(",", $data['zespol_name']);
  11. $zespol_id = explode(",", $data['zespol_id']);
  12.  
  13. for ($i=0;$i<count($sezon_name);$i++)
  14. {
  15. if(!in_array($sezon_name[$i], $seasons))
  16. {
  17. $seasons[$i] = $sezon_name[$i];
  18. $kierowca[$i] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array());
  19. $kierowca[$i]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]);
  20. } else
  21. {
  22. $season_key = array_search($sezon_name[$i], $seasons);
  23. $kierowca[$season_key]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]);
  24. }
  25. }
  26. print_r($kierowca);
  27.  
  28. ?>
Go to the top of the page
+Quote Post
Wicepsik
post
Post #6





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. $l=0;
  2. for ($i=0, $c=count($sezon_name);$i<$c;$i++)
  3. {
  4. if($sezon_name[$i] == $sezon_name[$i-1]){
  5. $kierowca[$l]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name' => $zespol_name[$i]);
  6. }else{
  7. $kierowca[++$l] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array(array('zespol_id' => $zespol_id[$i], 'zespol_name' => $zespol_name[$i])));
  8. }
  9. }
  10. print_r($kierowca);
Go to the top of the page
+Quote Post
arzach
post
Post #7





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Dziękuje kod tehaha jest poprawy, ale nazwy zespołów w sezonie się powtarzają dostaje teraz taką tablice.
Kod
Array
(
    [1] => Array
        (
            [sezon_name] => Sezon 2008
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [2] => Array
        (
            [sezon_name] => Sezon 2009
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

    [3] => Array
        (
            [sezon_name] => Sezon 2010
            [zespoly] => Array
                (
                    [0] => Array
                        (
                            [zespol_id] => 2
                            [zespol_name] => Renault
                        )

                    [1] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                    [2] => Array
                        (
                            [zespol_id] => 1
                            [zespol_name] => Toyota
                        )

                    [3] => Array
                        (
                            [zespol_id] => 3
                            [zespol_name] => BMW
                        )

                )

        )

)


Cytat(Wicepsik @ 8.08.2010, 17:00:12 ) *
  1. $l=0;
  2. for ($i=0, $c=count($sezon_name);$i<$c;$i++)
  3. {
  4. if($sezon_name[$i] == $sezon_name[$i-1]){
  5. $kierowca[$l]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name' => $zespol_name[$i]);
  6. }else{
  7. $kierowca[++$l] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array(array('zespol_id' => $zespol_id[$i], 'zespol_name' => $zespol_name[$i])));
  8. }
  9. }
  10. print_r($kierowca);



Ten kod jest błędny wywala błąd
Kod
Notice: Undefined offset: -1


Ten post edytował arzach 8.08.2010, 17:20:50
Go to the top of the page
+Quote Post
tehaha
post
Post #8





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


  1. $data['sezon_name'] = 'Sezon 2008,Sezon 2009,Sezon 2010,Sezon 2010,Sezon 2010,Sezon 2010';
  2. $data['zespol_name'] = 'BMW,BMW,Renault,BMW,Toyota,BMW';
  3. $data['zespol_id'] = '3,3,2,3,1,3';
  4.  
  5. $kierowca = array();
  6. $seasons = array();
  7. $sezon_name = explode(",", $data['sezon_name']);
  8. $zespol_name = explode(",", $data['zespol_name']);
  9. $zespol_id = explode(",", $data['zespol_id']);
  10.  
  11. for ($i=0;$i<count($sezon_name);$i++)
  12. {
  13. if(!in_array($sezon_name[$i], $seasons))
  14. {
  15. $seasons[$i] = $sezon_name[$i];
  16. $kierowca[$i] = array('sezon_name' => $sezon_name[$i], 'zespoly' => array());
  17. $kierowca[$i]['zespoly'][] = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]);
  18. } else
  19. {
  20. $season_key = array_search($sezon_name[$i], $seasons);
  21. $row = array('zespol_id' => $zespol_id[$i], 'zespol_name'=>$zespol_name[$i]); ;
  22. if(!array_search($row, $kierowca[$season_key]['zespoly']))
  23. {
  24. $kierowca[$season_key]['zespoly'][] = $row;
  25. }
  26. }
  27. }
  28. print_r($kierowca);
Go to the top of the page
+Quote Post
arzach
post
Post #9





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Dziękuje bardzo działa

Ten post edytował arzach 8.08.2010, 18:25:50
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 20:09