PHP DAU | Undefined variable

Hallo zusammen,

ich als PHP DAU benötige eure Hilfe :-). Habe gestern mal angefangen PHP Skripte in Symcon zu verwenden um mehr Komfort zu gewinnen.

Für meine Zisterne möchte ich gerne das ca. Wasservolumen berechen. Hierzu habe ich schon den mA wert meines Drucksensors in Wasserseule umgewandelt (h). Im Forum habe ich bereits ein passenden Code-Schnipsel gefunden.

function CalcVolZylinder($r,$L,$h) {
$a = sqrt(2*$r*$h - $h*$h);
$b = ($r-$h) * $a / ($r*$r);
$c = acos(($r-$h)/$r);
$vol = $r*$r*$L*($c-$b);
return($vol);
}

function VolKontrolle($r,$L) {
$v = $r*$r*$L*pi();
return($v);
}

Jedoch bekomme ich diesen nicht zum laufen, da ich wahrscheinlich was grundsetzliches nicht beachtet habe…

<?php
$r = 180;
$L = 200;
$h = GetValue(19520);

function CalcVolZylinder($r,$L,$h) {
  $a = sqrt(2*$r*$h - $h*$h);
  $b = ($r-$h) * $a / ($r*$r);
  $c = acos(($r-$h)/$r);
  $vol = $r*$r*$L*($c-$b);
  return($vol);
}

function VolKontrolle($r,$L) {
  $v = $r*$r*$L*pi();
  return($v);
}
SetValue(46222,$vol); 
SetValue(22692,$v);

Als Fehler bekomme ich „Undefined variable“ für vol und v? Wie kann ich diese definieren?

Danke und Grüße,
Daniel

Du musst die Funktionen auch aufrufen, nicht nur definieren :wink:

zB:
$v = VolKontrolle($r, $L);

Danach hast du erst $v mit Inhalt gefüllt und kannst es in SetValue verwenden.

Grüße,
Chris

Hi Chris,

Vielen Dank, hat funktoniert!

Bildschirmfoto 2020-11-23 um 21.06.18.png

Könntest du mir bitte noch erklären warum noch man „($r, $L)“ anhängen muss?

$v = VolKontrolle;
hätte ich noch verstanden aber dann…

Danke,
Daniel

Weil in der Funktion die beiden Variablen als Parameter übergeben werden müssen.

Es gibt auch Funktionen die keinen Parameter benötigen, dann gibt man aber trotzdem () mit an. So ist halt die Syntax von PHP :slight_smile:

Weiteres findest du im Internet - zB hier:
https://www.php-kurs.com/funktionen-in-php.htm

Viele Grüße,
Chris