public function sortBy($category,$bywhat,$ascdesc){ //var_dump($bywhat); function cmp($a, $b) { //global $bywhat; //var_dump($bywhat); $a=new SimpleXMLElement($a); $b=new SimpleXMLElement($b); } if ($category=="all"){ foreach ($this->cats as $cat=>$val){ } } else{ } }
Problem polega na tym, że do sortowania używam własnej funkcji porównania dwóch elementów array'a. Do fukcji głownej przekazuję parametr -> zmienną $bywhat. Niestety funkcja wewnętrzna funkcja cmp() nie widzi tej zmiennej. Nic nie da zadeklarowanie zmiennej $bywhat w funkcji cmp() jako global, gdyż global nie tycze się poziomu wyżej, tylko poziomu najwyższego zasięgu zmiennych. Nie mogę przekaza także do funkcji cmp() kolejnego parametru $bywhat, bo usort chyba posiada predefinicję funkcji porównywującej z dwoma parametrami. Jak to obejść

