Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> usort() w obiekcie
bigZbig
post
Post #1





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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?


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Manual -> usort() -> Przykład 3. Przykład użycia usort() używając funkcji składowej obiektu... EOT.


--------------------
Go to the top of the page
+Quote Post
bigZbig
post
Post #3





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował bigZbig 15.07.2005, 14:28:25


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:10