Funktion die anhand eines Schlüssels einen String baut

Hallo zusammen,

ich habe ich unten angehangene Tabelle, woraus ich mit Hilfe eines 4-stelligen Hex Schlüssel einen String bauen will.
Beispiel 1: Eingabe: 7FFF Ausgabe: keine Freigabe, da „Inbetriebnahme OK“ fehlt
Beispiel 2: Eingabe: FFFF Ausgabe: Freigabe
Beispiel 3: Eingabe: FF9E Ausgabe: keine Freigabe, da „Max Rücklauftemp“, „Temperatur“, „Anforderung HKA“ fehlt

Hat jemand eine gute Idee, womit ich den Rückgabestring möglichst einfach/effizient bauen kann? Die Daten irgendwie in ein Array übertragen und dann den String bauen?

Danke

Gruß Basti

Servus

Ja, aus dem Code machst eine Zahl mit welcher du dir dann aus einer Lookup-Table den String holst.
Die Table kann entweder ein Array oder ein simples Switch-Case Konstruct sein.
Wegen besserer Lesbarkeit (ist aber Geschmackssache) würde ich Switch Case nehmen. ggfl. will man ja basierend auf dem Ergebnis dann noch irgendnwas anderes tun. Da hätte man dann alles in einem und muß nicht nochmals abfragen.

gruß
bb

Hi, ich würde das über ein „Associative Array“ in PHP machen.


<?php
$return = array("7FFF"=>"keine Freigabe, da Inbetriebnahme OK fehlt", "FFFF"=>"Freigabe", "FF9E"=>"keine Freigabe, da Max Rücklauftemp, Temperatur, Anforderung HKA fehlt");

echo "Ausgabe: " . $return['FFFF'];
?>

Viele Grüße
Chris

@spaceguy: Aber es gibt doch soviele Kombinationen, dass ich da viele Stunden mit „Schreibarbeit“ beschäftigt wäre.

@ bbernhard: Wie genau würdest du das Array aufbauen? So ähnlich habe ich es momentan, aber gefallen tut mir das noch nicht.

Beispiel für die erste Ziffer:


$runRelease1 = array();
$runRelease1["0"] = array("Inbetriebnahme OK", "Taste OnOff", "Interne Freigabe HKA", "Eingang Modulfreigabe");
$runRelease1["1"] = array("Inbetriebnahme OK", "Taste OnOff", "Interne Freigabe HKA");
$runRelease1["2"] = array("Inbetriebnahme OK", "Taste OnOff", "Eingang Modulfreigabe");
$runRelease1["3"] = array("Inbetriebnahme OK", "Taste OnOff");
$runRelease1["4"] = array("Inbetriebnahme OK", "Interne Freigabe HKA", "Eingang Modulfreigabe");
$runRelease1["5"] = array("Inbetriebnahme OK", "Interne Freigabe HKA");
$runRelease1["6"] = array("Inbetriebnahme OK", "Eingang Modulfreigabe");
$runRelease1["7"] = array("Inbetriebnahme OK");
$runRelease1["8"] = array("Taste OnOff", "Interne Freigabe HKA", "Eingang Modulfreigabe");
$runRelease1["9"] = array("Taste OnOff", "Interne Freigabe HKA");
$runRelease1["A"] = array("Taste OnOff", "Eingang Modulfreigabe");
$runRelease1["B"] = array("Taste OnOff");
$runRelease1["C"] = array("Interne Freigabe HKA", "Eingang Modulfreigabe");
$runRelease1["D"] = array("Interne Freigabe HKA");
$runRelease1["E"] = array("Eingang Modulfreigabe");
$runRelease1["F"] = array();

Zweite, dritte und vierte Stelle analog dazu.

Gibt es keine schönere Lösung?

Hallo
Array ist evtl. doch ungeschickt.
Wie wäre es mit sowas:

$myString ="";
IF (strpos('89ABCDEF', $Stelle1) >0) {
	$mystring ='Inbetriebnahme OK';
	}
IF (strpos('4567CDEF', $Stelle1) >0) {
	$mystring =$mystring.' Taste ON OFF';
	}
IF (strpos('2367ABEF', $Stelle1) >0) {
	$mystring =$mystring.' Interne Freigabe Dachs';
	}
IF (strpos('1357BDF', $Stelle1) >0) {
	$mystring =$mystring.' Eingamg Modulfreigabe';
	}

Ist jetzt nur schnell ungetestet hingeschrieben. Ich denke aber das Prinzip ist erkennbar.

gruß
bb

Hammer, auf so eine Idee habe ich gehofft :slight_smile:

Ja genau so mache ich es! Die Implementierung ist kein Problem.

Danke!

Hallo…

ich habe auch noch etwas anzubieten … :slight_smile:

<?
$Hex=0xFF9E;
$Ausgabe="";

$Wert[1]="Inbetriebnahme OK";
$Wert[2]="Taste On/Off";
$Wert[3]="Interne Freigabe Dachs";
$Wert[4]="Eingang Modulfreigabe";
$Wert[5]="-";
$Wert[6]="Schaltzustand Netz OK";
$Wert[7]="Startverzögerung";
$Wert[8]="Netz OK";
$Wert[9]="Rückmeldung SiKette";
$Wert[10]="Max. Rücklauftemperatur";
$Wert[11]="Temperatur";
$Wert[12]="Störung";
$Wert[13]="Lauf24h";
$Wert[14]="Stillstandzeit";
$Wert[15]="Abschaltzeit";
$Wert[16]="Anforderung Dachs";

$bit_str = str_pad(decbin($Hex),16,0, STR_PAD_LEFT);

For ($i=1; $i<=16; $i++)
    {
	 If (substr($bit_str, $i-1,1) == 0)
		  {
		  If (StrLen($Ausgabe)==0)
			  {
			  $Ausgabe = ", da ". $Wert[$i];
			  }
       	  else
       	  {
		     $Ausgabe = $Ausgabe. ", ". $Wert[$i];
       	  }
		  }
    }

If (Strlen($Ausgabe)==0)
	{
	$Ausgabe="Freigabe";
	}
	else
	{
	$Ausgabe= "keine Freigabe". $Ausgabe. " fehlt";
	}

echo $Ausgabe;

?>

Gruß

Swifty