Pieni ongelma:
Minulla on moniuloitteinen taulukko jossa on x määrä alkioita.
Haluan PHP:llä poistaa kaikki ne arvot joita on vain YKSI kappale. array_unique ei ole siis se mitä kaipaan.
Lajittelu on helppo homma, mutta sitten tulikin hieman tenkkapoo (eli ei ajatus kulje taas).
Jollain valmista pientä koodinpätkää tai vastaavaa?
Tapoja on varmaan vaikka kuinka monta, tämmöinen toteutus tuli minulle ensimmäisenä mieleen:
<?php // alkuperäinen taulukko $taulu = array("testi", "esimerkki", "kokeilu", "esimerkki", "esimerkki"); // tallennetaan kunkin alkion määrä taulukkoon foreach ($taulu as $alkio) { $maarat[$alkio]++; } // käydään läpi alkiot ja niiden määrät foreach ($maarat as $alkio => $maara) { // jos alkioita on useampi kuin yksi... if ($maara > 1) { // ...lisätään tarpeellinen määrä alkioita uuteen tauluun for ($i = 1; $i <= $maara; $i++) { $uusi[] = $alkio; } } } // näytetään karsinnan tulos print_r($uusi); ?>
Laajennus omiin tarkoituksiin lienee helppoa.
Olen hieman hukassa tämän PHP taulukoiden kanssa... :(
Mutta:
Koodini näyttää taulukoiden luonnin kohdalta jotakuinkin tältä:
<?php // SQL koodia jne. $koirat[$laskuri][koira] = "$a_row[emo]"; $koirat[$laskuri][polvi] = "$polvi"; // LAJITELLAAN TAULUKKO KOIRAN REKISTERINUMERON MUKAAN asort ( $koirat ); // Ja tässä kohtaa sitten pitäisi poistaa taulukosta ne arvot jotka eivät ole siinä vähintään kahta kertaa. // SITTEN TULOSTETAAN TAULUKON SISÄLTÖ // KÄYDÄÄN LÄPI KOKO TAULUKKO foreach ( $koirat as $val ) { foreach ( $val as $key=>$final ) { print "$key: $final<br>"; } } ?>
Lisäys: olen nyt selaillut yhden sun toisenkin palstan läpi suomeksi, englanniksi ja espanjaksi enkä vieläkään ole löytänyt vastausta tuohon ongelmaani. Olen todella yksin... :S
Ja siis noita tupla-arvoja katsotaan pelkästään tuon koira sarakkeen mukaan...
Aihe on jo aika vanha, joten et voi enää vastata siihen.