Odpal sobie to i testuj. Może ułatwi Ci to pracę z kodem. Ilość IF'ów minimalnie zmniejszyłem ;-). Sprawa jest o tyle ciężka, że tutaj mamy przekazane parametry, które mogą, ale nie muszą być zmieniane w trakcie wykonania funkcji dlatego do funkcji getI, getU itd. trzeba przekazać wszystkie parametry. Jest na to sposób - zastosować klasę i zmienne klasy. Powodzenia.
testLeitwerg();
function testSingle( $u, $r, $i, $g ) {
$old = old_leitwert( $u, $r, $i, $g);
$new = leitwert( $u, $r, $i, $g);
} else {
}
echo " params: $u, $r, $i, $g <br />";
}
function testLeitwerg(){
/* testSingle( 0, 2, 2, 2 );
testSingle( 2, 0, 2, 2 );
testSingle( 2, 2, 0, 2 );
testSingle( 2, 2, 2, 0 ); */
testSingle( 15, 6, 2, 2 );
testSingle( 666, 8, 2, 2 );
testSingle( 54, 2, 3, 6 );
testSingle( 54544, 1, 2, 23 );
}
function old_leitwert($u, $r, $i, $g) {
# 1
if ( $u AND $i ) {
$r = $u/$i;
$g = 1/$r;
}
# 2
if ( $i AND $r ) {
$u = $r*$i;
$g = 1/$r;
}
# 3
if ( $u AND $r ) {
$i = $u/$r;
$g = 1/$r;
}
# 4
if ( $g AND $i ) {
$r = 1/$g;
$u = $r*$i;
}
#5
if ( $u AND $r ) {
$g = 1/$r;
$i = $u/$r;
}
# 6
if ( $u AND $g ) {
$i = $u*$g;
$r = $u/$i;
}
# 7
if ( $i AND $r ) {
$u = $i*$r;
$g = 1/$r;
}
# 8
if ( $g ) {
$r = 1/$g;
}
# 9
if ( $r ) {
$g = 1/$r;
}
return array('r' => $r, 'u' => $u, 'i' => $i, 'g' => $g ); }
function leitwert($u, $r, $i, $g) {
# 1
$r = getR( $u, $r, $i, $g );
$g = getG( $u, $r, $i, $g );
# 2
$u = getU( $u, $r, $i, $g );
$g = getG( $u, $r, $i, $g );
# 3
$i = getI( $u, $r, $i, $g) ;
$g = getG( $u, $r, $i, $g );
# 4
$r = getR( $u, $r, $i, $g );
$u = getU( $u, $r, $i, $g );
# 5
$g = getG( $u, $r, $i, $g );
$i = getI( $u, $r, $i, $g );
# 6
$i = getI( $u, $r, $i, $g );
$r = getR( $u, $r, $i, $g );
# 7
$u = getU( $u, $r, $i, $g );
$g = getG( $u, $r, $i, $g );
# 8
$r = getR( $u, $r, $i, $g );
# 9
$g = getG( $u, $r, $i, $g );
return array('r' => $r, 'u' => $u, 'i' => $i, 'g' => $g ); }
function getR( &$u, &$r, &$i, &$g ){
if ( $g OR ($g AND $i) ) {
$r = 1/$g;
}
if ( ($u AND $g) OR ($u AND $i) ) {
$r = $u/$i;
}
return $r;
}
function getG( &$u, &$r, &$i, &$g ){
if ( $r OR ($r AND $u) OR ($r AND $i) OR ($g AND $i) OR ($u AND $i) ) {
$g = 1/$r;
}
return $g;
}
function getU( &$u, &$r, &$i, &$g ){
if ( $i AND ($g OR $r) ) {
$u = $i*$r;
}
return $u;
}
function getI( &$u, &$r, &$i, &$g ){
if ( $u AND $g ) {
$i = $u*$g;
}
if ( $u AND $r ) {
$i = $u/$r;
}
return $i;
}