Array vergleichen
Bernhard
- php
Hallo,
zwei ein dimensionale Arrays sollen Verglichen werden, eins hat 32 Element der Andere 28, alle die Elemente, die nicht im dem größerem Array vorhanden sind solle ausgegeben werden, Zusatzinfo in der jeweiligen Werten kommen Songerzeichen vor wie "_-/". Habe folgendes sie zu vergleichen:
foreach($_POST["a_main_name"] as $e => $f)
{
if(in_array($f, $_POST["a_cfg_name"]))
{
echo "f: ".@$f.", ".@$_POST["a_cfg_name"][$e]."<br>\n";
}
}
Hier habe ich auch in andre Richtung versucht, dh. die Namen getauscht, ohne Ergebimbiss.
$verg = array_diff($_POST["a_main_name"], $_POST["a_cfg_name"]);
foreach($verg as $a => $b)
{
echo "a: ".$a.", b: ".$b."<br>\n";
}
foreach($a_main_name as $k => $v)
{
foreach($v_hpc_a as $a => $b)
{
if($v != $d)
{
echo $f.", b: ".$b."<br>\n";
}
}
}
In allen drei Versuchen kam nicht das gewünschte Ergebnis zur Stande, was ist die Uhrsache ? Sondeerzeichen ?
Im Augenblick bin ich ziemlich ratlos :-(
Kann mir jemand ein Vorschlag machen wie ich das lösen kann ?
Danke im Voraus.
Grüße Bernhard
Hallo,
zwei ein dimensionale Arrays sollen Verglichen werden, eins hat 32 Element der Andere 28, alle die Elemente, die nicht im dem größerem Array vorhanden sind solle ausgegeben werden, Zusatzinfo in der jeweiligen Werten kommen Songerzeichen vor wie "_-/". Habe folgendes sie zu vergleichen:
$_POST["a_main_name"] = hat 32 Elemente
$_POST["a_cfg_name"] = hat 28 Elemente
foreach($_POST["a_main_name"] as $e => $f)
{
if(!in_array($f, $_POST["a_cfg_name"]))
^^^^^^
{
echo "f: ".@$f.", ".@$_POST["a_cfg_name"][$e]."<br>\n";
}
}
wie ich verstanden habe, willst du die werte, die nicht drin sind!?
In allen drei Versuchen kam nicht das gewünschte Ergebnis zur Stande, was ist die Uhrsache ?
was ist denn passiert? was kam raus?
Sondeerzeichen ?
glaube ich nicht
guck mal ob das so geht, wie oben, wenn nicht, poste mal das ergebnis
Grüße Bernhard
grüsse
romy
Hallo,
wie ich verstanden habe, willst du die werte, die nicht drin sind!?
ja,
a_main_name: 0, b: TBLPROMOPLAN_WEEK
a_main_name: 1, b: JAAR
a_main_name: 2, b: WPPTHEMA
a_main_name: 3, b: WPPTYPE
a_main_name: 4, b: FOLDERTYPE
a_main_name: 5, b: LOOPTIJD
a_main_name: 6, b: Artnr
a_main_name: 7, b: Merk
a_main_name: 8, b: Omschrijving
a_main_name: 9, b: Verp
a_main_name: 10, b: Inhoud
a_main_name: 11, b: Eenheid
a_main_name: 12, b: Van Prijs2000
a_main_name: 13, b: Meerstuks / Toelichting
a_main_name: 14, b: Prijs
a_main_name: 15, b: Prijs Liter
a_main_name: 16, b: Prijs Kilo
a_main_name: 17, b: Folder
a_main_name: 18, b: PAGINA
a_main_name: 19, b: LNGWPPTYPE
a_main_name: 20, b: INTWPPTHEME
a_main_name: 21, b: LNGWPPTYPEID
a_main_name: 22, b: CNTPERIODID
a_main_name: 23, b: UOM_CODE_PARN
a_main_name: 24, b: FOLDER / MATERIAAL UITTREKSEL
a_main_name: 25, b: Afb
a_ cfg_name: 0, f: TBLPROMOPLAN_WEEK,
a_ cfg_name: 1, f: JAAR,
a_ cfg_name: 2, f: WPPTHEMA,
a_ cfg_name: 3, f: WPPTYPE,
a_ cfg_name: 4, f: FOLDERTYPE,
a_ cfg_name: 5, f: LOOPTIJD,
a_ cfg_name: 6, f: Artnr,
a_ cfg_name: 7, f: Merk,
a_ cfg_name: 8, f: Omschrijving,
a_ cfg_name: 9, f: Verp,
a_ cfg_name: 10, f: Inhoud,
a_ cfg_name: 11, f: Eenheid,
a_ cfg_name: 12, f: Van Prijs2000,
a_ cfg_name: 13, f: Meerstuks / Toelichting,
a_ cfg_name: 14, f: Prijs,
a_ cfg_name: 15, f: Prijs Liter,
a_ cfg_name: 16, f: Prijs Kilo,
a_ cfg_name: 17, f: Folder,
a_ cfg_name: 18, f: PAGINA,
a_ cfg_name: 19, f: LNGWPPTYPE,
a_ cfg_name: 20, f: INTWPPTHEME,
a_ cfg_name: 21, f: LNGWPPTYPEID,
a_ cfg_name: 22, f: CNTPERIODID,
a_ cfg_name: 23, f: UOM_CODE_PARN,
a_ cfg_name: 24, f: FOLDER / MATERIAAL UITTREKSEL,
a_ cfg_name: 25, f: Afb,
a_ cfg_name: 26, f: Einddatum,
a_ cfg_name: 27, f: WEEK,
a_ cfg_name: 28, f: T/M,
a_ cfg_name: 29, f: Startdatum,
a_ cfg_name: 30, f: koptekst1,
a_ cfg_name: 31, f: FORMULE,
Ab hier Ausgabe von "echo "f: ".@$f.", ".@$_POST["a_cfg_name"][$e]."<br>\n";":
f: TBLPROMOPLAN_WEEK, TBLPROMOPLAN_WEEK,
f: JAAR, JAAR,
f: WPPTHEMA, WPPTHEMA,
f: WPPTYPE, WPPTYPE,
f: FOLDERTYPE, FOLDERTYPE,
f: LOOPTIJD, LOOPTIJD,
f: Artnr, Artnr,
f: Merk, Merk,
f: Omschrijving, Omschrijving,
f: Verp, Verp,
f: Inhoud, Inhoud,
f: Eenheid, Eenheid,
f: Van Prijs2000, Van Prijs2000,
f: Meerstuks / Toelichting, Meerstuks / Toelichting,
f: Prijs, Prijs,
f: Prijs Liter, Prijs Liter,
f: Prijs Kilo, Prijs Kilo,
f: Folder, Folder,
f: PAGINA, PAGINA,
f: LNGWPPTYPE, LNGWPPTYPE,
f: INTWPPTHEME, INTWPPTHEME,
f: LNGWPPTYPEID, LNGWPPTYPEID,
f: CNTPERIODID, CNTPERIODID,
f: UOM_CODE_PARN, UOM_CODE_PARN,
f: FOLDER / MATERIAAL UITTREKSEL, FOLDER / MATERIAAL UITTREKSEL,
f: Afb, Afb,
Grüße Bernhard
Hallo,
also, es kann nicht sein, dass Werte in den Arrays verändert werden!!!, nicht bei diesem Konstrukt, vielleicht hast du noch mehr drin stehen?
ich habe es mal mit Beispielen ausgetestet:
<?php
$test1 = array("hahdg","agds","gdt","hdg","gd","jhsd");
$test2 = array("hahdg","agds","gdt","hdg","gd","jhsd","hsd","ugds");
foreach($test2 as $e => $f)
{
if(!in_array($f, $test1))
{
echo "f: ".@$f.", ".@$test2[$e]."<br>\n";
}
}
?>
funktioniert, d.h. der Algorithmus ist schon okay
er gibt mir aus:
f: hsd, hsd
f: ugds, ugds
falls du übrigens die Indexe ausgegeben haben willst, schreib anstatt $test2[$e] nur $e
dann siehts so aus:
f: hsd, 6
f: ugds, 7
wenn dir das nicht helfen sollte, gib mir bitte mal mehr code
bzw. probier mal das beispielsscript aus, ob es da geht um serverseitige Probleme auszuschliessen!
An den Sonderzeichen liegt es auf jeden Fall nicht, hab es auch damit ausprobiert!!!
hope it helps
romy
Grüße Bernhard
Hallo,
die Lösung habe ich schon gefunden, ich sammle die Werte NUR an eine andere Stelle :-)
Hier mein Quelltext:
$k=0;
$Query_main = mssql_query("SELECT * FROM Anzeigenamen");
while($row = mssql_field_name($Query_main))
{
if($row != "Nr" && $row != "WOCHE_NR")
{
if(isset($_POST["box_".$k]))
{
$a_doppelt[] = array($row, true);
}
else
{
$a_doppelt[] = array($row, false);
}
}
$k++;
}
Trotzt dem vielen Dank für Deine Hilfe.
Grüße Bernhard