On Tue, May 7, 2013 at 5:43 PM, Alex Nikitin <niksoft@xxxxxxxxx> wrote: > On Tue, May 7, 2013 at 4:29 PM, George Langley <george.langley@xxxxxxx> wrote: >> Hi all. I want to apply strtolower() AND trim() to all items in an array. But I don't see a way to call multiple callbacks with the array_map() function. >> Are my two choices the following: >> >> // 1) nesting two array_map() calls >> $cleanData = array_map('trim',(array_map('strtolower',$rawData))); >> >> >> // 2) call my own function with array_walk() >> $cleanData = array_walk('myCleaner',$rawData); >> >> function myCleaner($passedData){ >> $cleanData = array_map('strtolower',$passedData); >> $cleanData = array_map('trim',$cleanData); >> } >> //(Of course, wouldn't bother with a function, just to call array_map twice...) >> >> Just seeing if there's a better way than having to go through the array twice to apply each callback separately. Thanks, > Something like: > > $cleanData = array_map(function($str){return strtolower(trim($str));}, > $passedData); I'd go with this general approach, whether you use a named function or an anonymous function for the callback. I don't know how large the array is, but option #1 iterates the input array twice and option #2 iterates the array three times. If you eventually need to add additional functions to clean the input, they would add even more iterations. This approach only iterates once. Andrew -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php