Jump to content
php.lv forumi

Funkcijas darbība


kaapurs

Recommended Posts

Gribētos uzzināt, vai pareizi esmu izpratis f-as darbību:

function SortByLength($element1, $element2)

{

$lengthOfElement1 = strlen($element1);

$lengthOfElement2 = strlen($element2);

if($lengthOfElement1 == $lengthOfElement2)

return 0;

return ($lengthOfElement1 < $lengthOfElement2) ? -1 : 1;

}

 

Ja es viņu izmantoju, kā f-as usort() argumentu, tad masīva elementus viņa sakārto pēc principa tas, kuram salīdzinājuma izteiksmēs visvairāk būla "-1" atradīsies sākumā u.t.t. Vai es pareizi esmu sapratis? Un pēc kāda principa usort() šajā gadījumā veiks elementu salīdzināšanu? Piemēram, ja man ir array(element1, element2, element3, element4), tad kādā veidā usort() ievada masīva elementus argumenta f-ā. Piem., element1 ar element2, pēc tam element2 ar element3 u.t.t., vai arī uzreiz element1 salīdzina ar pārējiem masīva elementiem, t.i., element1 ar element2, element1 ar element3 u.t.t.

 

Paldies.

Link to comment
Share on other sites

php sort funkcija kārtošanu veic pēc Quick Sort algoritma. Algoritma aprakstā tu vari izlasīt kā notiek tā salīdzināšana un elementu mainīšana vietām.

Lietotāja definētā funkcija atgriež saņem tikai divas vērtības tāpēc, ka quick sort algoritmam salīdzināt vienā reizē vajag tikai divus elementus. Un šai funkcijai ir jānoskaidro, kura no padotajām vērtībām ir lielāka/mazāka vai arī abas vienādas. Tas, kurā vietā beigās atradīsies ieejas masīva elementi šī funkcijai viennozīmīgi uzreiz nepasaka, to visu nosaka kārtošanas algoritms.

Un kas ir "būla -1"? Būla vērtības ir tikai divas - false/true vai 0/1.

Link to comment
Share on other sites

×
×
  • Create New...