Bernhard: Array vergleichen

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";
    }
   }

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

  1. 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

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. Hallo,

      wie ich verstanden habe, willst du die werte, die nicht drin sind!?

      ja,

      $_POST["a_main_name"]  = hat sich geändert jetzt sind 25 Elemente

      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

      $_POST["a_cfg_name"]   = hat sich ebenfalls geändert, jetzt sind 31 Elemente

      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

      1. 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

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. 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