|
You last visited: Today at 04:55
Advertisement
[PHP] Nähere Zahl suchen
Discussion on [PHP] Nähere Zahl suchen within the Web Development forum part of the Coders Den category.
06/17/2014, 14:37
|
#1
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
[PHP] Nähere Zahl suchen
Hallo epvp,
habe jetzt grad irgendwie ein Problem und komme nicht auf die Lösung.
Ich habe einen Wert z.B. (16:25:04) und versuche die Nächst liegende in der Datenbank zu finden.
Die Werte sehen in der Datenbank wie folgt aus (15:87:21 , 18:26:01 , 84:10:15)
Nie Größer als 100:100:26
Hoffe ich habe es verständlich ausgedrückt.
Code:
$qWerte = sprintf("SELECT * FROM TB_Werte WHERE Name='ul'");
$rWerte = mysql_query($qWerte);
$a1 = array();
$a2 = array();
$a3 = array();
while ($row= mysql_fetch_assoc($rWerte)) {
$aKoordUL = explode(":",$row['Koordinaten']);
array_push($a1,(int)$aKoordUL[0]);
array_push($a2,(int)$aKoordUL[1]);
array_push($a3,(int)$aKoordUL[2]);
}
asort($a1);
asort($a2);
asort($a3);
Hier mal etwas, was ich im Internet gefunden habe. Nur Leider stimmt das überhaupt nicht überein.
Code:
$GLOBALS['steps'] = 0;
$iKoord = "16:8:23";
$array = explode(":",$iKoord);
echo findClosest((int)$array[0], $a1, 0, count($a1)-1), "\n";
echo "steps: {$GLOBALS['steps']}";
function findClosest($needle, $numbers, $from, $to){
$GLOBALS['steps']++;
$p = ($from + $to)/2;
$ceil = ceil($p);
$floor = floor($p);
if ($from == $floor || $to == $ceil){
$d1 = abs($needle - $numbers[$floor]);
$d2 = abs($needle - $numbers[$ceil]);
if($d1 < $d2){
return $numbers[$floor];
}
else{
return $numbers[$ceil];
}
}
elseif ($numbers[$floor] > $needle) {
return findClosest($needle, $numbers, $from, $floor);
}
else {
return findClosest($needle, $numbers, $ceil, $to);
}
}
|
|
|
06/17/2014, 18:17
|
#2
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
Falls es richtige 3D-Koordinaten sind, kannst du mittels Pythagoras die Distanz ermitteln und demnach vergleichen
|
|
|
06/17/2014, 19:32
|
#3
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
Quote:
Originally Posted by 'Heaven.
Falls es richtige 3D-Koordinaten sind, kannst du mittels Pythagoras die Distanz ermitteln und demnach vergleichen
|
Danke dir.
Muss jetzt nur noch in einem Array speichern welche Zahl am niedrigsten ist und diese dann jeweils ausgeben.
Code:
echo "Meine Koordinaten: " . (int)$array[0] . ":" . (int)$array[0] . ":" . (int)$array[0] . "<br>";
for ($i = 1; $i <= count($a1); $i++) {
echo sqrt(pow(($a1[$i] - (int)$array[0]),2) + pow(($a2[$i] - (int)$array[1]),2) + pow(($a3[$i] - (int)$array[2]),2)) . " => Koordinaten zum Vergleich " . $a1[$i] . ":" . $a2[$i] . ":" . $a3[$i] . "<br>" ;
}
|
|
|
06/17/2014, 19:59
|
#4
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
Code:
static Opponent GetClosestTarget()
{
var possibleShips = _opponents.Where(s => s.Company != 0 /*&& s.Company != _hero.FractionId*/).ToList();
Opponent ret = null;
if (possibleShips.Count > 0)
{
if (possibleShips.Count == 1)
{
ret = possibleShips[0];
}
else
{
ret = possibleShips[0];
double dist = _getDistance(_hero.X, _hero.Y, ret.X, ret.Y);
foreach (var x in possibleShips)
{
double d = _getDistance(_hero.X, _hero.Y, x.X, x.Y);
double com = Math.Min(dist, d);
if (com != dist)
{
ret = x;
dist = d;
}
}
}
}
return ret;
}
Eventuell hilft dir ja dies
|
|
|
06/17/2014, 20:47
|
#5
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
Habe trozdem noch irgendwie ein Problem bzw. gefällt mir die Ausgabe nicht.
Kann ich den return Wert nicht irgendwie Speichern und weiter unten einzelnd ausgeben lassen ?
z.B.
Code:
$data = $api->findClosest($_POST['spielername'];
//weiter unten
echo $data[0][0];
Code:
if ($_POST['findClosest']){
if(empty($_POST['spielername']))
{
$Information = "<p>Bitte geben Sie einen Spieler ein</p>";
}else{
$Information = "<p>Gefunden: ";
foreach($api->findClosest($_POST['spielername']) as $key=>$value)
{
$Information .= " [" . $key . "] ".$value;
}
$Information .= "</p>";
}
}
Code:
public static function findClosest($spielerName){
$getPlayerID = sprintf("SELECT ID FROM TB_DatenPlayer WHERE Spieler='" . mysql_real_escape_string($spielerName) . "'");
$playerID = mysql_query($getPlayerID);
while($varID = mysql_fetch_array($playerID))
{
$finalID = $varID['ID'];
}
$getPlayerI = sprintf("SELECT Koordinaten FROM TB_DatenKoo WHERE ID='" . $finalID . "'");
$playerKoord = mysql_query($getPlayerI);
while($varInseln = mysql_fetch_array($playerKoord))
{
$finalInseln = $varInseln['Koordinaten'];
}
$array = explode(":",$finalInseln);
$qWerte = sprintf("SELECT * FROM TB_DatenKoo WHERE Koordinaten='ul'");
$rWerte = mysql_query($qWerte);
$a1 = array();
$a2 = array();
$a3 = array();
while ($row = mysql_fetch_assoc($rWerte)) {
$aKoordUL = explode(":",$row['Koordinaten']);
array_push($a1,(int)$aKoordUL[0]);
array_push($a2,(int)$aKoordUL[1]);
array_push($a3,(int)$aKoordUL[2]);
}
asort($a1);
asort($a2);
asort($a3);
$a4 = array();
for ($i = 1; $i <= count($a1)-1; $i++) {
$varAbstand = round(sqrt(pow(($a1[$i] - (int)$array[0]),2) + pow(($a2[$i] - (int)$array[1]),2) + pow(($a3[$i] - (int)$array[2]),2)), 3);
$zwischenWerte["Abstand"] = $varAbstand;
$zwischenWerte["Lange"] = $a1[$i];
$zwischenWerte["Breite"] = $a2[$i];
$zwischenWerte["Punkt"] = $a3[$i];
array_push($a4,$zwischenWerte);
}
$min = min($a4);
return $min;
}
|
|
|
06/19/2014, 14:32
|
#6
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
^niemand eine Idee ?
|
|
|
06/19/2014, 14:42
|
#7
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
Quote:
Originally Posted by Devsome
Kann ich den return Wert nicht irgendwie Speichern und weiter unten einzelnd ausgeben lassen ?
|
packs einfach in ne variable rein und gibts später aus, wo ist das problem?
|
|
|
06/19/2014, 14:45
|
#8
|
dotCom
elite*gold: 12400
Join Date: Mar 2009
Posts: 15,881
Received Thanks: 4,386
|
Quote:
Originally Posted by tolio
packs einfach in ne variable rein und gibts später aus, wo ist das problem?
|
ich stande irgendwie auf dem Schlauch. Danke
|
|
|
|
Similar Threads
|
[Selling] Verkaufe 65er max. geared Chanter auf Kromede(nähere INFO PN)
10/26/2013 - Aion Trading - 2 Replies
Hallo,
verkaufe hiermit meinen 65er Kantor auf Kromede. Veteranen Belohnungen bis Stufe 40, Goldpaket läuft noch ca. 1 Jahr. Der Kantor hat max. 65er Gear, bei näheren Infos zum gear PN.
Schlag mir einen Preis vor oder einen so ziemlich gleich gegearten 65er Kleriker auf Kromede.
MFG: Relizee
pumb
|
[B] WOW-Account (nähere Infos im Thread) [S] Gebt mir Vorschläge
02/27/2013 - World of Warcraft Trading - 3 Replies
Heyo liebe Community.
Ich hab mich jetzt entschlossen meinen WoW Account zu verkaufen aus Privaten Gründen (Freundin -_-)
So. Auf dem Account befindet sich ein 85 Magier der für PvE auf Arkan und für PvP auf Frost geskillt ist. Der Magier ist noch nicht sehr lange auf 85, daher ist das Equip auch dementsprechend. Der Magier hat jeden Reitskill gelernt (310%)
Falls wer mehr Infos möchte soll er mir doch bitte ein PM schreiben oder mich in Skype adden: CreepaZ
Auf dem account befindet sich...
|
[VB.NET] Zahl > 50 elseif Zahl > 70 then...
02/25/2013 - .NET Languages - 5 Replies
Hi,
hab mal ein Problem und weiß nicht wie ich dazu bei google suchen soll.
Und zwar hab ich eine Zahl als STRING -.- und wollte mit dieser nun eine if Abfrage machen.
If Zahl > 50 then
....
|
nähere erklährung von essamp
10/04/2009 - Metin2 Private Server - 2 Replies
könnte mir einer das näher erklären bei mir lätt der die seite immmer stunden lang
-wie komme ich an die ip
-welche einstellungen muss ich drücken
thx garantiert
|
All times are GMT +2. The time now is 04:55.
|
|