On Tue, May 7, 2013 at 5:43 PM, Alex Nikitin <niks...@gmail.com> wrote:
> On Tue, May 7, 2013 at 4:29 PM, George Langley <george.lang...@shaw.ca> 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.


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

Reply via email to