litebearer Posted August 2, 2006 Share Posted August 2, 2006 The scenario:1. flatfile database consists of records delimited by carriage returns. records have fields delimited by commas example of file structure and content:[quote] 1,Nicholas,,Stoia,6992 Biscayne,White Lake,MI,48383,1,13,1946,,,,,,, 2,Myles,Edward,Dean,,,WV,,0,0,0,,,,,,, 3,Sharon,Marie,Stoia,6992 Biscayne,White Lake,MI,48383,7,16,1955,,,,,,, 4,Jonathon,Hunter,Stoia,6992 Biscayne,White Lake,MI,48383,12,13,1988,,,,,,, 5,Rebecca,,Dean,,,WV,,0,0,0,,,,,,, 6,Gilbert,Rial,Stebbins,22600 Bluewater Drive,Macomb Twp,MI,48044,0,0,0,,,,,,, 7,Beverly,,Stebbins,22600 Bluewater Drive,Macomb Twp,MI,48044,0,0,0,,,,,,, 8,Sean,Michael,Dean,167 Weston Road,Wellesley,MA,02482,0,0,0,,,,,,,[/quote]2. multidimensional array created as follows:[code] // read file into array $file = file("faf.txt"); $count = count($file); // convert first array to multidimensional array $i = 0; for($i=0;$i<$count;$i++) { $file_cards[$i] = explode(",", $file[$i]); }3. sort by last name ( function compare($x, $y){ if ( $x[3] == $y[3] ) return 0; else if ( $x[3] < $y[3] ) return -1; else return 1; } usort($file_cards, 'compare');[/code]The Question:The above works fine; however, in addition to sorting by last name [code]$file_cards[x][3] [/code]I would like to further sort by first name [code]$file_cards[x][1][/code]and then by middle name [code]$file_cards[x][2] [/code].How?Thanks,Lite... Link to comment https://forums.phpfreaks.com/topic/16331-sorting-multidimensional-array-by-multiple-fields/ Share on other sites More sharing options...
hitman6003 Posted August 3, 2006 Share Posted August 3, 2006 Well, one way would be to format the key as the full name:[code]$file = file("faf.txt");foreach ($file as $line) { $line = explode(",", $line); $name = $line[0] . ", " . $line[1] . ", " . $line[2]; $data[$name] = $line;}ksort($data);[/code] Link to comment https://forums.phpfreaks.com/topic/16331-sorting-multidimensional-array-by-multiple-fields/#findComment-68263 Share on other sites More sharing options...
hitman6003 Posted August 3, 2006 Share Posted August 3, 2006 Another option would be array_multisort (http://www.php.net/array_multisort) Link to comment https://forums.phpfreaks.com/topic/16331-sorting-multidimensional-array-by-multiple-fields/#findComment-68264 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.