Skip to content
Advertisement

create a PHP function that works for simple arrays and nested arrays

I am trying to create a function that works on both simple arrays and nested arrays. So far, the function looks like this:

function fnPrepareDataForBrowser($values)
  {
    $values = array_map('htmlspecialchars', $values);   
    return $values;
  }

It works fine for simple arrays – for example:

Array
(
    [Item ID] => 25469
    [Item Desc] => spiral nails, 1"
    [Standard Item] => yes
    [Entry UOM] => lb
)

But it fails with the message “Warning: htmlspecialchars() expects parameter 1 to be string, array given…” for nested arrays – for example:

Array
(
[0] => Array
    (
        [Item ID] => 25469
        [Item Description] => spiral nails, 1"
        [Standard Item] => yes
        [Entry UOM] => lb
    )

[1] => Array
    (
        [Item ID] => 25470
        [Item Description] => finishing screws, 2.5"
        [Standard Item] => no
        [Entry UOM] => lb
    )

[2] => Array
    (
        [Item ID] => 25576
        [Item Description] => paint brush, 3"
        [Standard Item] => no
        [Entry UOM] => each
    )
)

What modifications should be made to the function so it works for both simple arrays and nested arrays?

Advertisement

Answer

function fnPrepareDataForBrowser(& $values)
{
    return is_array($values) ? 
           array_map('fnPrepareDataForBrowser', $values) : 
           htmlspecialchars($values);   

}

$array = fnPrepareDataForBrowser( $your_array );
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement