| Autor | Zpráva | ||
|---|---|---|---|
| chudst Profil |
Dobrý den, moc prosím o pomoc se seřazením polí.
Mám dvě pole - vzdálenost a informace k bodu zájmu. Těchto bodů mám libovolné množství (od žádného po X v závislosti na lokaci, kde se vyskytuji). Potřebuji, pokud mám bodů více, aby se jich zobrazilo prvních 40 podle vzdálenosti (nejbližší napřed). <?php
// Vzdálenost mezi mnou a POI
$distancePOI[$countpoi] = $distance;
//Tvorba bodu zájmu
$poi[$countpoi] = ArelXMLHelper::createLocationBasedPOI($i, $title, explode(",", $findPOI[0]), "http://vsohbrno.chudst.cz/poi/poi_obrazek.png", "http://vsohbrno.chudst.cz/poi/poi_obrazek.png", $attribution[$countpoi], NULL);
?>Zkoušel jsem seřadit body dle vzdálenosti (zatím netestováno, zda-li funguje): <?php //Seřazení bodů dle vzdálenosti od nejmenšího po největší $POInearby = asort($distancePOI); ?> Ale nyní mám problém, jak to udělat, aby se zobrazovaly pouze nejbližší body. Pokud vypíšu tento skript, v pořádku se mi ukáže pouze 40 bodů, ale tak, jak jsou seřazeny v databázi, nikoli dle vzdálenosti. (Jednoduše proto, že ji tam nemám dosazenou, nevím jak.): <?php
foreach ($POInearby as $POInumber => $POIvalue)
{
if($POInumber < 40){
if(!empty($filter))
{
if(strtolower($filter) == strtolower($attribution[$POInumber]))
{
ArelXMLHelper::outputObject($poi[$POInumber]); // pomocí externího souboru vytvoří XML verzi
}
}
else
{ArelXMLHelper::outputObject($poi[$POInumber]);} // pomocí externího souboru vytvoří XML verzi
}
}
</php>Jednoduše příklad: $distancePOI[0] = 1km, a s tím spojené $poi[0] = ArelXMLHelper::createLocationBasedPOI(blabla, blabla. blabla); $distancePOI[1] = 5km, a s tím spojené $poi[1] = ArelXMLHelper::createLocationBasedPOI(bleble, bleble, bleble); $distancePOI[2] = 2km, a s tím spojené $poi[2] = ArelXMLHelper::createLocationBasedPOI(blublu, blublu, blublu); $POInearby[0] = 1km, >$poi[0] = ArelXMLHelper::createLocationBasedPOI(blabla, blabla. blabla); $POInearby[1] = 2km, >$poi[1] = ArelXMLHelper::createLocationBasedPOI(bleble, bleble, bleble); $POInearby[2] = 5km, > $poi[2] = ArelXMLHelper::createLocationBasedPOI(blublu, blublu, blublu); místo $POInearby[0] = 1km, >$poi[0] = ArelXMLHelper::createLocationBasedPOI(blabla, blabla. blabla); $POInearby[1] = 2km, > $poi[2] = ArelXMLHelper::createLocationBasedPOI(blublu, blublu, blublu); $POInearby[2] = 5km, >$poi[1] = ArelXMLHelper::createLocationBasedPOI(bleble, bleble, bleble); Děkuji moc za případnou radu! |
||
| Alphard Profil |
#2 · Zasláno: 1. 1. 2014, 03:08:02
V první řadě se nabízí otázka, proč to neřadit správně již v databázi.
Když už by se to mělo řadit v php se dvěma poli, můžete to udělat takto. První vzdálenostní pole ve tvaru identifikátor => vzdálenost, seřadit pomocí asort() tak jak to děláte a při výpisu procházet totéž pole, ale hodnoty brát z druhého.
foreach ($distancePOI as $key => $distance)
{
$POInearby[$key];
} |
||
| chudst Profil |
#3 · Zasláno: 1. 1. 2014, 15:18:53
Díky Vám moc, Alpharde, nakoplo mě to - již to funguje.
|
||
|
Časová prodleva: 12 let
|
|||
0