If you do not get this data from the SQL query, you can sort it with usort and stripos ; something like this should do:
$arr = array( "Babyfood, plums, bananas and rice, strained", "Bananas, dehydrated, or banana powder", "Bananas, raw", "Bread, banana, prepared from recipe, made with margarine", "CAMPBELL Soup Company, V8 SPLASH Juice Drinks, Strawberry Banana", "CAMPBELL Soup Company, V8 SPLASH Smoothies, Strawberry Banana", "CAMPBELL Soup Company, V8 V. FUSION Juices, Strawberry Banana", ); function compare_position($a, $b) { return stripos($a, 'banana') - stripos($b, 'banana'); } usort($arr, 'compare_position'); var_dump($arr);
i.e. you are sorting here with your own specific function that compares the position (case-insentive) of "Banana" in the two lines that it receives as parameters.
And you get this output for your array, after sorting:
$ /usr/local/php-5.3/bin/php temp.php array(7) { [0]=> string(37) "Bananas, dehydrated, or banana powder" [1]=> string(12) "Bananas, raw" [2]=> string(56) "Bread, banana, prepared from recipe, made with margarine" [3]=> string(43) "Babyfood, plums, bananas and rice, strained" [4]=> string(61) "CAMPBELL Soup Company, V8 SPLASH Smoothies, Strawberry Banana" [5]=> string(61) "CAMPBELL Soup Company, V8 V. FUSION Juices, Strawberry Banana" [6]=> string(64) "CAMPBELL Soup Company, V8 SPLASH Juice Drinks, Strawberry Banana" }
Of course, if you get this data from an SQL query, it might be easier to do some extra calculations on the SQL side ...