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: 11 let
|
0