[ m_k @ 26.10.2006. 20:28 ] @
Imam array koji izgleda ovako i treba da ga portiram po ovom 'score'. Kako to najbrze izvesti (meni na pamet pada samo sa dvije foreach petlje, ali ima li sta brze)?

Code:
Array
(
    [mujo] => Array
        (
            [score] => 12
            [grad] => sa
        )

    [igor] => Array
        (
            [score] => 16
            [grad] => za
        )

    [zlaja] => Array
        (
            [score] => 10
            [grad] => bg
        )

)


Treba da dobijem
- igor
- mujo
- zlaja
[ Br@nkoR @ 26.10.2006. 21:03 ] @
Možda nešto ovako:
Code:

$testArray = Array('mujo' => Array('score' => 12, 'grad' => 'sa'), 'igor' => Array('score' => 16, 'grad' => 'za'), 'zlaja' => Array('score' => 10, 'grad' => 'bg'));

function compare_score($a, $b) {
  $aScore = $a['score'];
  $bScore = $b['score'];
  if($aScore == $bScore) return 0;
  else return ($aScore > $bScore) ? -1 : 1;
}
uasort($testArray, 'compare_score');

echo '<pre>'.print_r($testArray, true).'</pre>';
echo '<pre>'.print_r(array_keys($testArray), true).'</pre>';
[ cume @ 27.10.2006. 07:26 ] @
A da probamo jos malo brze ;-D



Code:

$array = Array( 

 mujo => Array
        (
            score => 12,
            grad => "sa",
        ),

    igor => Array
        (
            score => 16,
            grad => "za"
        ),

    zlaja => Array
        (
            score => 10,
            grad => "bg"
        )

);



arsort($array);

echo "<pre>";
print_r($array);
echo "</pre>";
[ dzigorija @ 27.10.2006. 08:03 ] @
Postoji u PHP-u funkcija array_multisort

Vrlo je korisna, ali nije prosta kao ostale, tj. moras da procitas i razumes stranu iz manuala da bi shvatio kako radi.
[ cume @ 27.10.2006. 09:09 ] @
Ne vidim zasto je array_multisort() komplikovanija od bilo koje druge funkcije.
Svejedno, u ovom slucaju mu i arsort() završava posao.




[ m_k @ 27.10.2006. 09:16 ] @
Da, arsort() je odradio ono sto se trazi.
[ bzero @ 27.10.2006. 12:05 ] @
Citat:
m_k: Da, arsort() je odradio ono sto se trazi.


Tacno, samo sto ce arsort() da radi ono sto treba samo u ovom specificnom primeru. Sta ce se desiti ako u stvarnom programu imas, ili sutra treba da dodas jos neki parametar, naprimer id svakog korisnika, pa tvoj array sada izgleda ovako:

Code:

$array = Array( 
 mujo => Array
        (
            id => 1,
            score => 12,
            grad => "sa"
        ),

    igor => Array
        (
            id => 2,
            score => 16,
            grad => "za"
        ),

    zlaja => Array
        (
            id => 3,
            score => 10,
            grad => "bg"
        )
);


Zbog ovoga ti toplo preporucujem da koristis ono sto je Br@nkoR napisao.
[ cume @ 30.10.2006. 13:36 ] @
Ili još bolje array_multisort() :D

[ dddtux @ 19.03.2007. 08:14 ] @
Imam slicnu f-ju:

function rang($a, $b){
if($a[broj_elementa_u_nizu] == $b[broj_elementa_u_nizu])
return 0;
else if ($a[broj_elementa_u_nizu] < $b[broj_elementa_u_nizu])
return 1;
else
return -1;
}

usort($niz, 'rang');

gde je broj_elementa_u_nizu na primer 9. Ako su dva elementa jednaka, kako da tada poredi i vrednosti elementa broj 8. (Npr. [9] je uspeh ucenika. Ako dva ucenika imaju isti uspeh, da prednost ima ucenik koji ima vise diploma ; broj diplome = [8])?

Hvala unapred


RESIO SAM PROBLEM sa (uslov1 && uslov2).


[Ovu poruku je menjao dddtux dana 19.03.2007. u 09:46 GMT+1]