Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: usort() w obiekcie
Forum PHP.pl > Forum > Przedszkole
bigZbig
Mam przykladowo

  1. <?php
  2. class obj {
  3.  
  4. function sort() {
  5. $owoce[0][&#092;"owoc\"] = \"cytryny\";
  6. $owoce[1][&#092;"owoc\"] = \"jabłka\";
  7. $owoce[2][&#092;"owoc\"] = \"winogrona\";
  8.  
  9. usort($owoce, &#092;"cmp\");
  10. return $owoce;  
  11. }
  12.  
  13. function _cmp ($a, $b) {
  14. return strcmp($a[&#092;"owoc\"], $b[\"owoc\"]);
  15. }
  16.  
  17. }
  18.  
  19. function cmp ($a, $b) {
  20. return strcmp($a[&#092;"owoc\"], $b[\"owoc\"]);
  21. } 
  22. ?>


Korzystajac z funkcji usort w obiekcie potrafie uzyc funkcji porownujacej znajdujacej sie poza obiektem cmp(), a ja bym chcial uzyc funkcji znajdujacej sie w obiekcie $this->_cmp(). Czy ktos wie jak to wykonac?
crash
Manual -> usort() -> Przykład 3. Przykład użycia usort() używając funkcji składowej obiektu... EOT.
bigZbig
Tylko, ze ja chce uzyc usort wewnatrz klasy w ktorej jest funkcja porownujaca a nie z zewnatrz jak to jest w przytoczonym przez Ciebie przykladzie.

OK znalazlem odpowiedni przyklad, ktory rozwiazuje moj problem

  1. <?php
  2.  
  3. class mdasort {
  4.  var $aData;//the array we want to sort.
  5.  var $aSortkeys;//the order in which we want the array to be sorted.
  6.  
  7.  function _sortcmp($a, $b, $i=0) {
  8.  $r = strnatcmp($a[$this->aSortkeys[$i][0]],$b[$this->aSortkeys[$i][0]]);
  9.  if ($this->aSortkeys[$i][1] == &#092;"DESC\") $r = $r * -1;
  10.  if($r==0) {
  11.  $i++;
  12.  if ($this->aSortkeys[$i]) $r = $this->_sortcmp($a, $b, $i);
  13.  }
  14.  return $r;
  15.  }
  16.  
  17.  function sort() {
  18.  if(count($this->aSortkeys)) {
  19.  usort($this->aData,array($this,&#092;"_sortcmp\"));
  20.  }
  21.  }
  22. }
  23. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.