PHP 2 Demensionales Array durchsuchen

KHeine

Cadet 1st Year
Registriert
Feb. 2014
Beiträge
13
Hey zusammen,
ich bin auf der suche nach einer Funktion um ein 2 Demensionales Array zu durchsuchen.

Folgendes:

Ich habe ein Array, dass ist ungefähr so aufgebaut:

[0] => Array
(
[name] => APP_Word
[distinguishedname] => CN=APP_Word,OU=Sicherheitsgruppen
)

[1] => Array
(
[name] => APP_EXCEL
[distinguishedname] => APP_EXCEL,OU=Sicherheitsgruppen
)

[2] => Array
(
[name] => APP_POWERPOINT
[distinguishedname] => CN=APP_POWERPOINT,OU=Sicherheitsgruppen
)

[3] => Array
(
[name] => APP_VISIO
[distinguishedname] => CN=APP_VISIO,OU=Sicherheitsgruppen
)

und ein Array, dass quasi so aussieht:

[0] => CN=APP_WORD,OU=Sicherheitsgruppen
[1] => CN=APP_POWERPOINT,OU=Sicherheitsgruppen
[2] => CN=APP_VISIO,OU=Sicherheitsgruppen


mein ziel ist es nun, Checkboxen anzuhaken. Diese Checkboxen werden mit eine schleife und dem ersten Array Erstellt. Mir wäre es nun wichig, alle Checkboxen / Elemente, die im Unteren Array enthalten sind, auch anzuhaken, ungefähr so sollte dann die Liste mit den Boxen aussehen:

[App_Word] [x]
[App_Excel] [ ]
[App_Powerpoint] [x]
[App_Visio] [x]


Wie realisiere ich das ganze?

Bin für jeden tipp dankbar, vielen Dank im Voraus (:


Kai
 
Zuletzt bearbeitet: (zu früh abgeschickt :X)
So ganz verstehe ich es gerade nicht...vielleicht liegt es auch nur an Freitag Nachmittag ;-)

Du hast eine Webseite und möchtest dort was anhaken? Und alles was darunter hängt, soll automatisch mit angehakt werden?
Javascript?
Ajax?
HTTP-Request?
 
Zuletzt bearbeitet:
Hi,

sehe ich wie wahli: wenn du etwas auf Clientseite dynamisieren willst brauchst du JavaScript, nicht PHP! Das läuft nur auf dem Server.

Oder meinst du eine Art Vorauswahl? Ist ein bisschen unverständlich das Ganze :)

VG,
Mad
 
Aus dem 2D Array erstmal ein 1D Array bauen?

So das aus diesem dort:
[0] => Array
(
[name] => APP_Word
[distinguishedname] => CN=APP_Word,OU=Sicherheitsgruppen
)
Sowas wird?
Array3[0] = Array1[0][[distinguishedname] ]


Somit müsste dein Array3 identisch aufgebaut sein mit dein Array2, so dass du einfacher vergleichen kannst.
http://de2.php.net/array_diff

Sprich du vergleichst Array2 mit dem Array3. ( oder andersherum )
Somit müsstest du alle Einträge im Ergebnis haben die nicht doppelt also nicht angeharkt sind.
 
Also, ich erkläre das mal Ohne unübersichtliche Arrays (:

Ich versuche eine App Verwaltung zu erstellen, mit PHP.
Dazu werden von einem bestimmten User die Aktuelle Gruppenzugehörigkeit aus der Domäne abgefragt (Siehe 2. Array).

Für die Verwaltung selber wird eine PHP Seite generiert, die die Domäne nach Gruppen durchsucht, die mit den Buchstaben "APP_" beginnen. Daraus wird dann der "Name" und der "Distinguishedname" gezogen und in das Array (siehe Array 1 ) geschrieben. Mit Hilfe dieser beiden Informationen soll nun die Seite generiert werden.
Die APPS, die ein User bereits hat, sollen in der GESAMMT Liste bei der Erstellung der Seite bereits angehakt sein, die, die der user nicht hat, dementsprechend nicht.

"Startseite" (Hier wird der User gewählt)
"App Auswahl Seite" (Hier werden, abhängig vom Username, dann die APPS angehakt und angezeigt mit Checkboxen)
"Textdatei schreiben Seite" (Hier werden 2 Textdateien erstellt, eine mit den "distingueshednames" der apps, die neu angeklickt worden sind und eine Datei mit den namen der Apps, die vielleicht sogar entfernt worden sind)

Eig funktioniert alles, nur dass ich die Informationen, in welchen APP Gruppen der User bereits ist, nicht wirklich auswerten kann bzw die Information dazu nutzen kann, mit meine Boxen anzuhaken.

Hoffe es ist nun besser verständlich (:
Wenn es mir hilft, gerne, aber ich würde ungern andere Sprachen erstmal verwenden als PHP (:

Grüße,
Kai
 
Code:
$apps  = array(
 array(
  'name' => 'APP_Word',
  'distinguishedname' => 'CN=APP_Word,OU=Sicherheitsgruppen'
 ),
array(
  'name' => 'APP_POWERPOINT',
  'distinguishedname' => 'CN=APP_POWERPOINT,OU=Sicherheitsgruppen'
 ),
array(
  'name' => 'APP_VISIO',
  'distinguishedname' => 'CN=APP_VISIO,OU=Sicherheitsgruppen'
 )
);

$selected = array(
 'CN=APP_WORD,OU=Sicherheitsgruppen',
 'CN=APP_POWERPOINT,OU=Sicherheitsgruppen',
 'CN=APP_VISIO,OU=Sicherheitsgruppen'
);


foreach ($apps as $app) {
 $checked = array_key_exists($app['distinguishedname'], $selected)
   ? 'checked="checked"'
   : '';
 echo '<input type="checkbox" name="' . $app['name'] . '" ' . $checked . '  />';
}

Sowas in der Art?
Musst du noch testen...
 
Zuletzt bearbeitet:
Array 1 = Liste aller Apps
Array 2 = Liste der Apps eines Users

Du zeigst alle Apps auf der Webseite "App Auswahl Seite" an. Und hier möchtest du vermutlich nur die anhaken, welche der User hat.

Erweitere Array 1 um ein Boolean-Feld und setze dieses Feld mit "false".
Mach eine Schleife über alle Apps und wenn eine App in der Liste des Users auftaucht, dann setze das Boolean-Feld auf "true".
Jetzt hast du die Information in Array 1, ob der User die App bereits hat. Damit kannst du den Krempel auf der Page anzeigen.

Edit: da war schon einer schneller - und gleich mit Code :daumen:
 
Also hiermit erstelle ich die Icons

Code:
for ($gi = 0; $gi < $gx; $gi++) 
                {
       
                   echo "<input id='1' type='checkbox' name='check[$gi]'  value=" . $gergebnis[$gi]["distinguishedname"] . " checked='checked'> " . $gergebnis[$gi]["name"] . "<br>";
                   
                      
                }

$gergebnis ist dabei dann das Array mit allen Apps drin. Und mir liegt, wie gesagt das Array $gpz vor, wie passe ich nun die Schleife für die Icons an? Ich bin mit dem Code von "[ChAoZ]" ein bisschen überfordert. Bin nicht so der Typ von Copy und paste, würde das gerne Stück für Stück verstehen (:

Liebe Grüße,
Kai
 
Soweit ich das verstanden habe macht er beide Arrays vergleichbar. Danach prüft er in einer Schleife ob der eine Wert im Array im anderen Array vorhanden ist, wenn ja setzt er die Variable checked auf "checked", ansonsten ist sie leer.

Bei der Schleife welche am Ende die Ausgabe generiert steht dann jenachdem ob das nun vorhanden ist oder nicht:

<input type="checkbox" name="appname" checked />
<input type="checkbox" name="appname" />

Beim Zweiten würde wohl ein Leerzeichen auftauchen, aber ist ja nicht schlimm.
 
Hey,
habe das oben mal an meine Bedürfnisse angepasst, jedoch bleibt die Variable $checked leer :O
Und man darf nicht vergessen, dass die "value" immer dem distinguishedname entsprechen muss :)

Weiß jemand woran das liegen könnte?

Grüße,
Kai
 
Zurück
Oben