Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Internet > Web razvoj > Serverske aplikacije i baze podataka

Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion...
MySQL, PostgreSQL, MSQL, Oracle...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 25.7.2016, 22:23   #1
maric989
Novi član
 
Član od: 3.2.2010.
Lokacija: Kg
Poruke: 26
Zahvalnice: 9
Zahvaljeno 2 puta na jednoj poruci
Određen forumom php sortiranje problem

$studenti = array(
array('ime' => 'Pera', 'prezime' => 'Petrovic', 'godine' => 25, 'prosecna_ocena' => 7.4),
array('ime' => 'Mika', 'prezime' => 'Lazic', 'godine' => 23, 'prosecna_ocena' => 7.2),
array('ime' => 'Jova', 'prezime' => 'Jovanovic', 'godine' => 24, 'prosecna_ocena' => 6.2),
array('ime' => 'Rade', 'prezime' => 'Radovic', 'godine' => 20, 'prosecna_ocena' => 8.9),
array('ime' => 'Jovanka', 'prezime' => 'Mihajlovic', 'godine' => 21, 'prosecna_ocena' => 10.0),
);

imam zadatak u komee rebam da uradim sledece;
Napisati funkciju sortiraj($niz, $polje, $redosled){} koje pri pozivu
$studenti = sortiraj($studenti, ‘ime’, ‘ASC’); sortira niz studenti po polju ime u rastucem redosledu, a pri pozivu sortiraj($studenti, ‘ocena’, ‘DESC’);
sortira niz studenti po polju ocena u opadajucem.


znam da se radi preko multi_arrays-a,ali sam zakucao. Znam da nije previse tesko,a svaka pomoc bi mi dobrodosla,hvala.
maric989 je offline   Odgovor sa citatom ove poruke
Stara 26.7.2016, 0:39   #2
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: php sortiranje problem

PHP kod:
function sortiraj($array$key$order){
    
// Check if it's an array
    
if(!is_array($array))
        return array();
    
    
// Remove arrays without requested key
    
$result array_filter($array, function($subarr) use ($key){
        return 
array_key_exists($key$subarr);
    });
    
    
// Order subarrays
    
usort($result, function($a$b) use ($key) {
        if(
is_string($a[$key]) && is_string($b[$key]))
           return 
strcmp($a[$key], $b[$key]);
           
        if(
$a[$key] === $b[$key])
           return 
0;
        
        return (
$a[$key] - $b[$key]) > : -1;
    });
    
    return 
strtolower($order) == "desc" array_reverse($result) : $result;

Remedy je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Remedy na korisnoj poruci:
maric989 (27.7.2016)
Stara 27.7.2016, 15:19   #3
maric989
Novi član
 
Član od: 3.2.2010.
Lokacija: Kg
Poruke: 26
Zahvalnice: 9
Zahvaljeno 2 puta na jednoj poruci
Određen forumom Re: php sortiranje problem

Mada mi je polovina ovih stvari jos uvek nepoznato,ali probacu da primenim da vidim kako ce da funkioise.
Hvala
maric989 je offline   Odgovor sa citatom ove poruke
Stara 27.7.2016, 18:56   #4
Remedy
Veteran
 
Član od: 5.11.2005.
Poruke: 826
Zahvalnice: 177
Zahvaljeno 199 puta na 154 poruka
Određen forumom Re: php sortiranje problem

Funkcije "array_filter" i "usort" kao drugi parametar dobijaju callback funkciju koju koriste za filtriranje, odnosno sortiranje. Svaki clan niza (koji je prvi parametar) se prosledjuje callback funkciji, ako funkcija vrati "true" taj clan ostaje u nizu. Kod "usort" se prosledjuju po dva clana, ako funkcija vrati integer koji je manji od 0, znaci da je prvi clan manji od drugog, ako vrati 0, jednaki su, i ako vrati veci od 0, prvi clan je veci od drugog.

Ja sam kao callback funkcije koristio anonimne funkcije (dakle nisu prethodno definisane sa odredjenim imenom), zato sto takva sintaksa omogucava koriscenje "use" keyworda, a koji omogucava da se uhvati vrednost promenljive ($key) u parent scope-u funkcije (tamo gde je funkcija definisana). Moze taj problem da se resi i drugacije, npr imas klasu koja ce cuvati vrednost promeljive i imace metod za filtriranje. Isti princip vazi i za "usort".
PHP kod:
class MyFilter
{
   private 
$key;

   function 
__construct($key)
   {
      
$this->key $key;
   }
   public function 
arrayHasKey($array)
   {
      return 
array_key_exists($this->key$array);
   }
}

$filtered array_filter($studenti, array(new MyFilter('ime'), 'arrayHasKey')); 
Ternary operator ( expression 1 ? expression 2 : expression 3 ) - ako expression 1 vrati true, vraca se vrednost expressiona 2, u protivnom se vraca vrednost expressiona 3. Na primer:
PHP kod:
return strtolower($order) == "desc" array_reverse($result) : $result;
// Moze da se napise i kao
if(strtolower($order) == "desc")
{
   return 
array_reverse($result);
}
else
{
   return 
$result;

Remedy je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Problem sa novim HDD-om WD Caviar Green WD15EARS (potrebna strucna pomoc) dzambo Kvarovi 18 27.2.2011 2:41
Problem sa znakom '%' u php skriptu dbaja Serverske aplikacije i baze podataka 5 2.6.2009 13:36
PHP MYSQL problem dark mesiah Serverske aplikacije i baze podataka 3 12.5.2009 18:00
HP DeskJet f4180 - problem sa instalacijom vanila Ostale komponente 3 12.3.2009 19:22
Problem sa memory_limit u php Kasper_Dobri_Duh Web razvoj 4 11.11.2007 4:49


Sva vremena su po Griniču +2 h. Sada je 20:29.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com