Re: array_map() with multiple callback functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux