Sweet!  Thanks for the help!

-----Original Message-----
From: Martin Towell [mailto:[EMAIL PROTECTED]]
Sent: Monday, April 01, 2002 7:15 PM
To: 'Bloom, Chris'; '[EMAIL PROTECTED]'
Subject: RE: [PHP] Sorting Multi-Dimensional Arrays using uksort()


try using usort() instead of uksort() - (i haven't checked the manual but) I
believe uksort is for sorting based on the keys and not the values, which is
what you're trying to do

-----Original Message-----
From: Bloom, Chris [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, April 02, 2002 9:57 AM
To: '[EMAIL PROTECTED]'
Cc: Bloom, Chris
Subject: [PHP] Sorting Multi-Dimensional Arrays using uksort()


Hey folks: 

I have a function that returns an array. I'm assigning the returned array to
a variable inside another function: 
---------- 
$dirs = getFileArray($parentDir,"title_2.txt"); 
---------- 

If I use print_r() on the variable it writes out as expected: 
---------- 
Array 
( 
[0] => Array 
( 
[folderName] => 97StudioPhotos 
[linkText] => Studio 3/27 - 3/30 (by Matt Myrdal/VE) 
[sortDate] => 03/31/02 

) 

[1] => Array 
( 
[folderName] => 98PromoPhotos 
[linkText] => Promo Photos BW (by Matt Myrdal - 3/24/02) 
[sortDate] => 03/24/02 

) 

[2] => Array 
( 
[folderName] => 99PhotoSet1 
[linkText] => Photo Set I (by Matt Myrdal - 3/12/02) 
[sortDate] => 03/12/02 

) 

) 
---------- 

Now I want to sort this array using a custom defined sort method: 
---------- 
uksort($dirs,"sortByDateDesc"); 

function sortByDateDesc($a,$b) 
{ 
print "<hr>a = <br>"; 
print_r($a); 
print "<hr>"; 

print "<hr>b = <br>"; 
print_r($b); 
print "<hr>"; 

print $a." vs ".$b."<br>"; 

if ($a[sortDate] > $b[sortDate]){ 
print " ".$a[sortDate]." > ".$b[sortDate]."<br>"; 
return -1; 
} else if ($a[sortDate] < $b[sortDate]){ 
print " ".$a[sortDate]." < ".$b[sortDate]."<br>"; 
return 1; 
} else { 
print " ".$a[sortDate]." = ".$b[sortDate]."<br>"; 
return 0; 
} 
} 
---------- 

As you can see, I've added a bunch of print() calls for testing. The trouble
is that none of the variables are being output into the print functions and
all of the print_r() calls just return "1". In the end, the array is not
being sorted at all. Why can't I access any of the array elements in this
function and why won't it sort correctly? 

I've tried accessing the elements everyway I can think of: 
$a[sortDate] 
$a["sortDate"] 
$a[2] 

Regards, 
Chris Bloom
PS: Attached is an example file
 <<arr_sort_test.php>> 
Web Infrastructure Analyst
Lifespan Corporate Services
167 Point Street #245
Providence, RI 02903
401-444-2074


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to