Thanks Torben, I've been messing about with code all afternoon, and my mind is blitzed. Didn't think it was possible since there was no way I could access the first name part (after I accessed the surname) since it had no delimiter except spaces. Managed to get the surname in a sorted array, but couldn't manage to merge the first names.
I'll try this code -- hope it works, and get back to you! Thanks again! Andre On Thursday 24 June 2004 11:21 pm, Lars Torben Wilson wrote: > Andre Dubuc wrote: > > Given a text string: > > > > $OK = "Joe Blow, William Howard Anser, Hannie Jansen, etc, etc,"; > > [snip] > > > How would I get this 'before_last' function to iterate through the > > initial string, so I could build a sorted list with both first and last > > names, sorted by last name? I can't seem to get a proper 'foreach' > > statement to work, nor a 'while' statement. > > There are few different ways. Here's one: > > --------------------------------------------------------------------------- >---- function splitSortNames($namePartSeparator, > $nameSeparator, > $nameString) > { > preg_match_all('/(\w+)((\s(\w+)\s)*(\s?(\w+)))*/', > $nameString, > $tmp_names, > PREG_SET_ORDER); > $names = array(); > foreach ($tmp_names as $i => $name) > { > $tmp = array(); > if (!empty($name[6])) $tmp[1] = $name[6]; > if (!empty($name[1])) $tmp[2] = $name[1]; > if (!empty($name[4])) > { > $tmp[2] .= ' ' . $name[4]; > } > $names[$name[0]] = join(', ', $tmp); > } > asort($names); > $names = array_keys($names); > return $names; > } > > $names = splitSortNames(' ', ', ', $OK); > print_r($names); > --------------------------------------------------------------------------- >---- > > To check out a few other ideas along with a short (likely inaccurate) speed > test, check out http://www.thebuttlesschaps.com/sortByLast.html (there is > a 'View Source' link at the bottom of the page). > > This code returns the names in the format in which they are given. You > can speed it up a bit by having it return the names in 'lastname, > firstname' format. For this, change > > $names[$name[0]] = join(', ', $tmp); > > to > > $names[$i] = join(', ', $tmp); > > and remove the lines: > > asort($names); > $names = array_keys($names); > > > I'm really confused. I've read almost every entry on arrays/strings and > > searched code snippets. Almost all focus on one element arrays such > > "apple, orange, peach" rather than 2 or more elements such as "fancy > > cars, big trucks, fast dangerous motorcycles," > > > > Is it even possible to accomplish this type sort on a string? > > > > > > > > Any advice, pointers, or help will be greatly appreciated, > > Tia, > > Andre > > Hopefully the code above will give you some aid--and you can probably > improve on that regexp in preg_match_all(). The other 2 ways on the site > have totally different methods, and different strengths and weaknesses. > Maybe you can turn one of them into something useful to you. > > > Hope this helps, > > Torben > > > -- > Torben Wilson <[EMAIL PROTECTED]> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php