Ordering an array help

Hi

I’m crap with arrays.

I’ve installed a WP plugin and the plugin uses an array. I want to order the array, by length (longest to shortest).

For example (using sample data, printed, using print_r):


Array
(
    [balance transfer credit card] => /balance-transfer-credit-cards|0|1|0|1|0|0|0|balance transfer credit cards
    [balance transfer credit cards] => /balance-transfer-credit-cards|0|1|0|1|0|0|0|balance transfer credit cards
    [amet] => /|0|1|0|0|0|0|0|Amet
    [low rate credit cards] => /low-rate-credit-cards|0|1|0|0|0|0|0|
    [credit cards] => /credit-cards|0|1|0|0|0|0|0|
)

Would become:


Array
(
    [balance transfer credit cards] => /balance-transfer-credit-cards|0|1|0|1|0|0|0|balance transfer credit cards
    [balance transfer credit card] => /balance-transfer-credit-cards|0|1|0|1|0|0|0|balance transfer credit cards
    [low rate credit cards] => /low-rate-credit-cards|0|1|0|0|0|0|0|
    [credit cards] => /credit-cards|0|1|0|0|0|0|0|   
    [amet] => /|0|1|0|0|0|0|0|Amet  
    
)

So, sorting (longest to shortest) the left side of the arrow ( => )

Thank you

Try this:


<?php
$array = array(
	'ccc'		=> 3,
	'bb'		=> 2,
	'dddd'	=> 4,
	'a'			=> 1
);

function key_length_sort($a, $b){
	$a = strlen($a);
	$b = strlen($b);
	if($a === $b){
		return 0;
	}
	return $a < $b ? 1 : -1 ;
}

uksort($array, 'key_length_sort');

print_r($array);

/*
	Array
	(
			[dddd] => 4
			[ccc] => 3
			[bb] => 2
			[a] => 1
	)
*/

Let me know if you get stuck.

Anthony.

Yep, that works great, thanks!
I tried usort earlier, which didn’t work. but uksort worked a charm.

Thanks.