Recursive trim() function to handle arrays and objects
up vote
1
down vote
favorite
I have come up with a recursive function which applies trim()
recursively to all string members of an array/object.
I don't have any specific quandaries about my code so I am receptive to all feedback.
My goal is maximum compatibility for all PHP versions: past, present, and future.
<?php
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = ( $character_mask === null ? trim( $o ) : trim( $o, $character_mask ) );
}
elseif( is_array( $o ) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
php strings array recursion
add a comment |
up vote
1
down vote
favorite
I have come up with a recursive function which applies trim()
recursively to all string members of an array/object.
I don't have any specific quandaries about my code so I am receptive to all feedback.
My goal is maximum compatibility for all PHP versions: past, present, and future.
<?php
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = ( $character_mask === null ? trim( $o ) : trim( $o, $character_mask ) );
}
elseif( is_array( $o ) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
php strings array recursion
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have come up with a recursive function which applies trim()
recursively to all string members of an array/object.
I don't have any specific quandaries about my code so I am receptive to all feedback.
My goal is maximum compatibility for all PHP versions: past, present, and future.
<?php
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = ( $character_mask === null ? trim( $o ) : trim( $o, $character_mask ) );
}
elseif( is_array( $o ) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
php strings array recursion
I have come up with a recursive function which applies trim()
recursively to all string members of an array/object.
I don't have any specific quandaries about my code so I am receptive to all feedback.
My goal is maximum compatibility for all PHP versions: past, present, and future.
<?php
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = ( $character_mask === null ? trim( $o ) : trim( $o, $character_mask ) );
}
elseif( is_array( $o ) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
php strings array recursion
php strings array recursion
edited Nov 13 at 16:54
200_success
127k15148410
127k15148410
asked Nov 13 at 16:04
MonkeyZeus
2481315
2481315
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
Avoid if-else nesting to keep things flat. Return inside the first if is enough to do so.
I added is_iterable()
so this function can handle more types than just array
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = trim( $o, $character_mask ?? " tnrx0B" );
return $o;
}
if( is_iterable($o) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
New contributor
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like theencoding
parameter fromhtmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry butis_iterable()
also fails to meet the compatibility criteria :-/
– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
Avoid if-else nesting to keep things flat. Return inside the first if is enough to do so.
I added is_iterable()
so this function can handle more types than just array
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = trim( $o, $character_mask ?? " tnrx0B" );
return $o;
}
if( is_iterable($o) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
New contributor
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like theencoding
parameter fromhtmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry butis_iterable()
also fails to meet the compatibility criteria :-/
– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
add a comment |
up vote
2
down vote
Avoid if-else nesting to keep things flat. Return inside the first if is enough to do so.
I added is_iterable()
so this function can handle more types than just array
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = trim( $o, $character_mask ?? " tnrx0B" );
return $o;
}
if( is_iterable($o) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
New contributor
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like theencoding
parameter fromhtmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry butis_iterable()
also fails to meet the compatibility criteria :-/
– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
add a comment |
up vote
2
down vote
up vote
2
down vote
Avoid if-else nesting to keep things flat. Return inside the first if is enough to do so.
I added is_iterable()
so this function can handle more types than just array
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = trim( $o, $character_mask ?? " tnrx0B" );
return $o;
}
if( is_iterable($o) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
New contributor
Avoid if-else nesting to keep things flat. Return inside the first if is enough to do so.
I added is_iterable()
so this function can handle more types than just array
/**
* trim_r
*
* Recursively trim an array's or object's string values
* Preserves all non-string values
*
* @access public
* @param mixed
* @param mixed
* @return mixed
*/
function &trim_r( &$o, $character_mask = null )
{
// Only apply trim() to strings
if( is_string( $o ) )
{
// Respect the $character_mask; cannot pass null as 2nd parameter for some HHVM versions
$o = trim( $o, $character_mask ?? " tnrx0B" );
return $o;
}
if( is_iterable($o) || is_object( $o ) )
{
// Loop this array/object and apply trim_r() to its members
foreach( $o as &$v )
{
trim_r( $v );
}
}
// Supply this just in case the invoker wishes to receive result as a reference
return $o;
}
New contributor
edited Nov 13 at 17:04
New contributor
answered Nov 13 at 16:36
nforced
414
414
New contributor
New contributor
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like theencoding
parameter fromhtmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry butis_iterable()
also fails to meet the compatibility criteria :-/
– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
add a comment |
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like theencoding
parameter fromhtmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry butis_iterable()
also fails to meet the compatibility criteria :-/
– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for
" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like the encoding
parameter from htmlentities()
– MonkeyZeus
Nov 13 at 16:41
Hmm, I like this but I should have specified maximum compatibility for as many PHP versions as possible. The null coalescing operator was introduced in PHP 7. As for
" tnrx0B"
, I am hesitant to hardcode this because there is a chance it will change in the future just like the encoding
parameter from htmlentities()
– MonkeyZeus
Nov 13 at 16:41
Sorry but
is_iterable()
also fails to meet the compatibility criteria :-/– MonkeyZeus
Nov 13 at 17:54
Sorry but
is_iterable()
also fails to meet the compatibility criteria :-/– MonkeyZeus
Nov 13 at 17:54
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
@MonkeyZeus right, I wasn't aware these is such criteria at the time of writing.
– nforced
2 days ago
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
I know, that's why I upvoted you anyways
– MonkeyZeus
yesterday
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f207570%2frecursive-trim-function-to-handle-arrays-and-objects%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown