usort within a class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to get the usort function working inside of a class, but am
having some issues. Basically, the compare function which is the second
parameter isn't recognised, but I'm not really sure how to indicate
exactly where it is.

I've gone over the usort() docs and read the user comments, and the only
thing I've found so far which looked like it was the same issue gave
this example:



bo at erichsen dot com 20-Mar-2001 01:16 
when using usort to refer to a function inside a class i have
succesfully used: 

<?php usort($myarray,array($this,"cmp")); ?>

Unfortunately, that doesn't work either. A basic example is as follows:


class Search_model extends Model
{
	function get_results($q)
	{
		if(strlen($q))
		{
			$results = array();

			$words = explode(' ', $q);
			sort($words);

			// build the basic match query parts to be used for the content and
blog tables
			if(substr($words[0], 0, 1) == '+' || substr($words[0], 0, 1) == '-'
|| substr($words[0], 0, 1) == '"')
			{
				$queryP1 = "SELECT *, MATCH(`content`) AGAINST('$q' IN BOOLEAN MODE)
AS `score` FROM";
				$queryP2 = "WHERE MATCH(`content`) AGAINST('$q' IN BOOLEAN MODE)";
			}
			else
			{
				$queryP1 = "SELECT *, MATCH(`content`) AGAINST('$q') AS `score`
FROM";
				$queryP2 = "WHERE `display`='yes' AND MATCH(`content`)
AGAINST('$q')";
			}


			$sql = "$queryP1 `content` $queryP2";
			$query = $this->db->query($sql);
			foreach($query->result() as $row)
			{
				$results[] = $row;
				$results[count($result)-1]->content_type = 'content';
			}

			usort($results, array($this, "content_score_sort"));
		}
	}

	function content_score_sort($a, $b)
	{
		// custom sort function to sort pages based on their score, which is
an array value within each page
		if($a['score'] == $b['score'])
			return 0;
		else
			return ($a['score'] > $b['score']) ? -1 : 1;
	}
}

I know it's probably something very simple, but for the life of me I
can't find what I'm missing.

I think in part it's that the normal way I know of calling that sort
function from within the class is $this->content_score_sort(), but that
isn't recognised either.

If anyone can shed any light on this it'd be very welcome!

-- 
Thanks,
Ash
http://www.ashleysheridan.co.uk



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux