1UnitedPower: PHP arrays vergleichen in schleife ?

Beitrag lesen

Hakuna matata!

Ich verstehe das mit der Schleife nur wie ich die Werte mit dem Index vergleiche nicht.

Schleifen sind schlicht unverständlich. Besser ist, man benutzt Funktionen mit sprechenden Namen für das, was man zu erreichen versucht.

Das eine array1 sieht ja z.B. so aus
[0] ===> Hardware_Info_Id ;
[1] ===> Hardware_Type_Id;
[2] ===> Temp_Min;
usw.
insgsamt ca 30 Einträge die eigentlich die Namen der tabellenfelder in der DB sind.

Beim array2 was ich durch das Formular bekomme ist der Index = einer der Namen die im array1 als werte vorkommen.

Das zweite Array könnte also zum Beispiel so aussehen:

$array2 = array(  
   "Hardware_Info_id" => 42,  
   "Temp_Min" => 50,  
   "Buuhuuuhuuu" => "fooooo"  
);

Und am Ende deiner Berechnung hättest du gerne eine Teilmenge von $array2, und zwar genau mit den Einträgen, deren Schlüssel in $array1 als Werte hinterlegt ist. Mein Vorschlag:

Du tauschst Schlüssel und Werte des ersten Arrays, um eine Struktur zu erzeugen, die dem zweiten Array sehr ähnlicher ist:

$flipped = array_flip( $array1 );

Anschließend bildest du die Schnittmenge über den Schlüsseln der beiden Arrays:

$intersection = array_intersect_key( $array1, $flipped );

Das ließe sich sogar zu einem Einzeiler zusammenbauen:

$intersection = array_intersect_key( $array1, array_flip( $array2 ) );

Und der Code ist obendrauf sehr viel aussagekräftiger und leserlicher als der Spaghetti-Code, der entsteht, wenn man mit Schleifen arbeitet.

--
“All right, then, I'll go to hell.” – Huck Finn