Jo: Kleines Logisches/Syntax Problem

Beitrag lesen

Hi,


> while($i<$anzahl)
> {
> 	$abstand = 50;

Abstand wird so in jedem Schleifendurchlauf wieder auf 50 gesetzt.

Ja das hab ich schon geändert als es mir aufgefallen ist.


> 	$abstand_unten = abs($p_r[$i] - $hz[0]);
> 	$abstand_oben = abs($p_r[$i] - $hz[1]);
> 	if($abstand_unten < $abstand_oben < $abstand)

$abstand_unten < $abstand_oben ergibt true oder false.

Und true < 50 oder false < 50 ($abstand ist ja immer 50) ergibt keinen Sinn.

Auch wenn $abstand jeweils der kleinste bis jetzt gefundene Abstand wäre, wäre das immer noch eine Zahl, die sich schlecht mit booleans vergleichen läßt (auch wenn PHP dabei entsprechende Typumwandlungen vornimmt - es kommt höchstwahrscheinlich nicht das raus, was Du willst)

Das hab ich mittlerweile so:


if($abstand_unten < $abstand_oben and $abstand_oben < $abstand)
	{
		$abstand = $abstand_unten;
		$a = $i;
	}
	elseif($abstand_oben < $abstand_unten and $abstand_unten < $abstand)
	{
		$abstand = $abstand_oben;
		$a = $i;
	}

abs() scheint irgendwie nicht zu funktionieren also hab ich noch eine Betrags abfrage rein gebaut. Die dann gegebenenfalls mit -1 multipliziert.

So vergleicht er ja jetzt ob Unten bzw. Oben kleiner sind als Oben bzw. Unten und ob sie jeweils kleiner sind als der bis dahin kleinste Abstand. falls nicht wird die If bzw Elseif ja garnicht ausgeführt, weil dann ja die abfrage False ergibt, und $a bleibt auf dem $i wo der kleineste Abstand ist. Oder täusche ich mich da vollkommen?

$a müsste dann die Stelle im Array ausgeben dessen Abstand am kleinsten ist oder?

Nö. Da kommt Unsinn bei raus.

cu,
Andreas a/k/a MudGuard