-
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):
PHP Code:
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:
PHP Code:
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 Code:
<?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.