phpbar.de logo

Mailinglisten-Archive

[php] Doppelte Eintraege in Array

[php] Doppelte Eintraege in Array

Juri.Smarschevski php_(at)_phpcenter.de
Fri, 11 May 2001 11:24:15 +0200


> -----Original Message-----
> From: php-admin_(at)_phpcenter.de [mailto:php-admin_(at)_phpcenter.de]On Behalf Of
> Andreas Kaiser
> Sent: Friday, May 11, 2001 10:22 AM
> To: Juri.Smarschevski
> Subject: Re: [php] Doppelte Eintraege in Array
>
>
> Hallo Juri,
Hi Andreas,

>
> <besseresBeispiel>
> $i = 0;
> while ($db->next_record()) {
>     $res[$i]["id"] = $db->f("id");
>     $res[$i]["prodkoeff"] = $prodkoeff($db->f("id"));
>     $res[$i]["prodfaktor"] = $prodfaktor($db->f("id"));
>     if ($res[$i]["prodfaktor"] > 0) {
>         $res[$i]["prodgroup"] = $prodgroup($res[$i]["prodfaktor"]);
>     } else {
>         $res[$i]["prodgroup"] = $prodgroup($db->f("id");
>     }
>     $i++;
> } // while
> </besseresBeispiel>
>
> Jetz kann es trotzdem passieren, das ich doppelte
> $res[$i]["prodfaktor"] Einträge in meinem Array habe ("prodfaktor"
> liegt doppelt vor).
> Bei den Elementen wo $res[x]["prodfaktor"] == $res[y]["prodfaktor"] ist,
> möchte ich das komplette Element $res[y] aus dem Array löschen.
> Gibt es dafür eine Funktion ähnlich array_unique oder es sogar diese
> Funktion?

ist mir nicht bekannt, wenn man dies per Hand abbilden wollte, koennte
die function in Deinem Fall etwa so aussehen.

$arrNew = $arrTmp = array();
for ($i=0; $i<count($res); $i++) {
 if (isset($arrTmp[ $res[$i]["prodfaktor"] ])) continue;
 $arrTmp[ $res[$i]["prodfaktor"] ] = 1;
 $arrNew[] = $res[$i];
// oder $arrNew[$i] = $res[$i]; falls Du die gleiche $i behalten
moechtest.
}
unset ($arrTmp);
$res = $arrNew;
unset ($arrNew);

sicherlich gibt's noch ein paar andere moeglichkeiten

uebrigens
$prodgroup($res[$i]["prodfaktor"]) etc. a la $name(...)
kapiere ich syntaktisch nicht ganz. oder ist's eine nicht
gelungene copy-paste variante ;-) ?

Gruss,
Juri



php::bar PHP Wiki   -   Listenarchive