lulu: Schleifen oder Array Problem

Beitrag lesen

Huhu Klaus

Nur irgendwie funktioniert das bei mir nicht, entweder setzt er das erste oder letzte Element vom aktiv Array auf 1 aber alle anderen Felder werden mit 0 gesetzt.

$bestand = array();
$aktiv   = array();

$bestand  = "101111;102111;103111;104111;105111;106111;107111;108111;109111;110111";
$aktiv   = "101111;103111;104111;105111;108111;109111";

$array_bestand = array();
$array_aktiv = array();

$array_bestand = explode(';', $bestand);
$array_aktiv   = explode(';', $aktiv);

$anzahl_bestand =  count ($array_bestand);
$anzahl_aktiv =  count ($array_aktiv);

for ($i=0; $i <$anzahl_bestand; $i++)
{
  $array_liste[$i][0]= $array_bestand[$i];

for ($y=0; $y <$anzahl_aktiv; $y++)
  {

if ($array_bestand[$i] == $array_aktiv[$y])
    {
    $array_liste[$i][1]= 1;
    }
   else
    {
    $array_liste[$i][1]= 0;
    }

}
}

Was habe ich denn da falsch gemacht?

Da steckt folgender logischer Fehler drin.
Die For-Schleife welche über $y läuft, geht immer
_alle_ Elemente des $array_bestand durch und
setzt jeweils $array_liste[$i][1] auf 0 oder 1.

Als Ergebnis erhältst Du immer das Ergebnis des _letzten_ Durchganges.

Ein Lösung könnte folgendes sein

// default 0 setzen
$array_liste[$i][1]= 0;

for ($y=0; $y <$anzahl_aktiv; $y++)
{
 if ($array_bestand[$i] == $array_aktiv[$y])
 {
 $array_liste[$i][1]= 1;
   // wenn gefunden diese for-Schleife beenden
 break;
 }

}

Wenn ich Deine Aufgabe-/Problemstellung richtig verstanden habe
könnte Dir die PHP-Funktion array_diff einiges an Arbeit abnehmen ;-)

http://de2.php.net/manual/en/function.array-diff.php

Viele Grüße

lulu

--
bythewaythewebsuxgoofflineandenjoytheday