Variablen erstellen

Hallo IPSler,

ich habe da mal wieder ein kleines Problem in PHP das mit Sicherheit für Einige leicht zu lösen ist.

Ich möchte eine Variable aus mehreren Teilen zusammensetzen.

$Com_Kueche = 12345;

$test = '$Com';
$test1 = 'Kueche';

$Com = $test."_".$test1;

Als Ergebnis soll in $Com 12345 stehen, leider ergibt die Addierung als Ergebnis $Com_Kueche und nicht den erwünschten 12345.

Hat jemand einen Tip für mich wie ich die Addierung erstellen muss.


$Com_Kueche = 12345; 

$test = $Com_Kueche; 
$test1 = 'Kueche'; 

$Com = $test."_".$test1;  

Meinst du so etwa?

paresy
</span></span>

Hallo paresy,

nicht ganz.

Beispiel:


$Com_Kueche = 12345;

$Com = $Com_Kueche;

Dann steht in $Com die 12345.

Schreibe ich aber:


$Com_Kueche = 12345;
$Raum = "Kueche";

$Com = '$Com_'."$Raum";

Dann steht in $Com der String $Com_Kueche. Ich will aber die Instanznummer aus $Com_Kueche.

Ich weiß schon, ist nicht einfach zu erzählen.

Hallo,

ich versteh die Frage nicht

Franz

Hallo guyabano,

dies ist nur ein Teil eines Skriptes.

Ich möchte das Skript nicht für jeden Raum neu erstellen sondern ein Skript mit einer Variable füttern Namens „$Raum“.

In $Raum steht der Namen des Raumes, z.B. Kueche, Wohnzimmer, usw.

Jetzt sollen alle Variablen um den Part $Raum ergänzt werden.

Ich zeige Euch am besten einen Teil des Skriptes:

include "inc_edip.ips.php";


$daten = $Daten_Kueche;
$Com = $Com_Kueche;
$Dimmen = $Dimmen_Kueche;

// hier folgt das eigentlich Skript


Mein Ziel ist es das alle Variablen wo jetzt „Kueche“ steht durch einen Platzhalter ergänzt werden wie z.B. $Raum. In $Raum steht dann z.B. Kueche.

Vielleicht ist es jetzt ein wenig verständlicher?!?!

Als Ergänzung noch die inc_edip.ips.php auch wenn nicht von belang.

// Instanzen und Variablen Definition

// Instanzen der eDips
$Com_Kueche = 57448;

// Dimmzeiten der eDips
$Dimmen_Kueche = 10;

// Dateneingänge der eDips
$Daten_Kueche = GetValueString("Dateneingang");


Hallo,

ich zeige es dir mal, wie ich es durch mein ganzes Projekt hin durch mache:

Zuerst lege ich alle Räume in einem Array ab.

$Room_id       = array(
                       // FHT's
                       'FLOOR',
                       'WC',
                       'SALA',
                       'KITCH',
                       'BATH1',
                       'BATH2',
                       'KID1',
                       'KID2',
                       'COMP',
                       'KID3',
                       'MASBED',
                       // ----------------------------
                       'CENTHEAT',
                       'FOODSTOR',
                       'CELLAR'
                      );

Das Skript heisst dann bei mir ‚global_arrays.ips.php‘

So, wenn ich nun ein Skript aufrufe, was für alle Räume gleich ist, dann fängt ein Skript immer so an:

// Load Global Variables
include_once('GLOBAL_ARRAYS.ips.php');

for($d=0; $d<=10; $d++)
    {
     // identify, what Room
     $room = $Room_id[$d];

So, nun hast du in der Variable $room eben deine Raum_ID stehen
Da ich hier 11 Räume habe, wird er die Schleife eben 11x wiederholen und jedesmal einen anderen Raum bearbeiten. SOmit kannst du 11 FHT’s mit einem Skript in einem Schlag bearbeiten.

Natürlich müssen deine IPS Variablen auch nach diesem Prinzip benannt sein.
Jetzt kannst du dann eine Variable z.B. $room."_Licht_Status" nennen.

Ich steuere nach diesem Prinzip fast alles, FHT’s, Rolläden, Flurbeleuchtung, etc…

Ich hoffe ich konnte dir helfen

mfG Franz

Hallo guyabano,

vielen Dank für deinen Versuch der Erklärung.

Dieses Schema der Variablenabarbeitung per Array ist mir schon klar und sollte auch bei mir später in etwa so aussehen.

Die Funktion der Schleife ist aber nicht die Lösung in meinem Skript, ich will ja erst einmal die im Skript zu verarbeitende Variable erstellen.

Hier die hardgecodete Variante:

$daten = $Daten_Kueche; 
$Com = $Com_Kueche; 
$Dimmen = $Dimmen_Kueche; 

soll durch dies ersetzt werden.


$Raum = "Kueche";

$daten = '$Daten_'.$Raum; 
$Com = '$Com_'.$Raum; 
$Dimmen = '$Dimmen_'.$Raum; 

Leider ist dann aber in den Endvariablen $daten, $Com und $Dimmen nicht der gewünschte Wert wie in der inc_edip angegeben, sondern

$daten = „$Daten_Kueche“
$Com = „$Com_Kueche“
$Dimmen = „$Dimmen_Kueche“

sprich nicht der eigentliche Wert wie in der inc_edip sondern der kaufmännisch addierte Textstring.

ICH WILL ABER DEN INHALT DER inc_edip.

Hallo Werner,

versuchs mal damit:

$Raum = "Kueche";
$Com_Kueche = 12345;

$Com = eval("return \$Com_$Raum;");
echo $Com;

Gruß
HJH

Mein Dank an Torro,

auch Dir ein Freibier auf dem nächsten Usertreffen. (Jetzt muss ich mir eine Liste machen oder gleich eine Runde Freibier ausgeben)

Es kann so einfach sein.

$Com_Kueche = 12345;

$Raum = 'Kueche';

$Com = 'Com_'."$Raum";

echo $$Com;

Hallo HJH,

Du bekommst dein Freibier in den nächsten Wochen auf dem München-Stammtisch.

Hallo,

also noch ein Versuch. So kannst du den Inhalt von zusammengesetzten Variablen rauskriegen. Das hat mir mal Torro beigebracht.
Beachte bitte den doppelten $$ vor dem x

$com_daten = 2345;

$a='com';
$b='daten';

$x = $a."_".$b;

echo $$x;

Ich hoffe, ich habe die Frage jetzt kapiert :rolleyes:

[nachtrag] So, HJH war schneller, doch ich glaub das Resultat ist das gleiche[/nachtrag]

mfG Franz

Hallo guyabano,

genau das hat mir unserer großer Meister gerade auch beigebracht.

Trotzdem Danke für deine Mühe. Das mit dem Array werde ich weiter verfolgen.

Ach Franz, sei doch ehrlich. Du wolltest doch einfach nur auch noch ein Bier… :smiley:

Och nee du, wenn schon, dann wäre es noch immer Torro. Der hatte mir diesen Tipp mal gegeben.

mfG Franz