Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-11-16 16:26:57

  poslad - Użytkownik

poslad
Użytkownik
Zarejestrowany: 2012-12-26

[SOLVED] php - dodawanie zdublowanych elementów tablicy

Witam

Mam taką tablicę dwuwymiarową

Kod:

array(4) {
  [0]=>
  array(2) {
    ["username"]=>
    string(7) "Bradley"
    ["score"]=>
    int(1)
  }
  [1]=>
  array(2) {
    ["username"]=>
    string(4) "Koń"
    ["score"]=>
    int(2)
  }
  [2]=>
  array(2) {
    ["username"]=>
    string(5) "Bradley"
    ["score"]=>
    int(2)
  }
  [3]=>
  array(2) {
    ["username"]=>
    string(4) "Mike"
    ["score"]=>
    int(2)
  }
}

Chciałbym teraz dodać do siebie zduplikowane elementy (czyli te, w których USERNAME jest takie same) a później usunąć duplikat i przeindeksować tablicę. Czyli interesuje mnie wynik:

Kod:

array(3) {
  [0]=>
  array(2) {
    ["username"]=>
    string(4) "Koń"
    ["score"]=>
    int(2)
  }
  [1]=>
  array(2) {
    ["username"]=>
    string(5) "Bradley"
    ["score"]=>
    int(3)
  }
  [2]=>
  array(2) {
    ["username"]=>
    string(4) "Mike"
    ["score"]=>
    int(2)
  }
}

Czyli z dwóch wpisów Bradleya (jeden 2 punkty, drugi 1 punkt) ma się zrobić jeden wpis z sumą (3 punkty).

Próbowałem na wiele sposobów, różne array_merge, array_splice, wszystko - nic nie pomaga.

Ma ktoś jakiś pomysł?

Ostatnio edytowany przez poslad (2013-11-16 17:56:34)

Offline

 

#2  2013-11-16 16:39:26

  averatec - Użytkownik

averatec
Użytkownik
Zarejestrowany: 2013-10-25

Re: [SOLVED] php - dodawanie zdublowanych elementów tablicy

Kod:

<?php
$in = array(...);
$out = array();
foreach ($in as $iv)
{
    $found = false;
    foreach ($out as &$ov)
    {
        if ($ov['username'] == $iv['username'])
        {
            $ov['score'] += $iv['score'];
            $found = true;
            break;
        }
    }
    if (!$found)
        $out[] = $iv;
}

Ostatnio edytowany przez averatec (2013-11-16 16:42:41)

Offline

 

#3  2013-11-16 17:16:41

  poslad - Użytkownik

poslad
Użytkownik
Zarejestrowany: 2012-12-26

Re: [SOLVED] php - dodawanie zdublowanych elementów tablicy

Dziękuję za szybką odpowiedź.

Pocieszeniem dla mnie może być jedynie to, że byłem już blisko, zrobiłem pętlę for w pętli for i porównywałem username, a później zapisywałem wyniki do nowej tablicy, ale to jednak nie było to.

Ale to co ty napisałeś idealnie zadziałało "od kopa"!

Pytanie z ciekawości - miałeś to już zapisane, czy napisałeś teraz z głowy?

Offline

 

#4  2013-11-16 17:45:59

  averatec - Użytkownik

averatec
Użytkownik
Zarejestrowany: 2013-10-25

Re: [SOLVED] php - dodawanie zdublowanych elementów tablicy

napisalem to chwila jest, dosc prosty problem ktory daloby sie pewnie jeszcze uproscic

Offline

 

#5  2013-11-16 17:56:19

  poslad - Użytkownik

poslad
Użytkownik
Zarejestrowany: 2012-12-26

Re: [SOLVED] php - dodawanie zdublowanych elementów tablicy

Cóż, ja dopiero kilka dni temu nauczyłem używać się pętli foreach, jeszcze wszystko przede mną. Może z czasem nabiorę takiego doświadczenia. Przyznaję, że jestem pod wrażeniem.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)