简体   繁体   English

递归地通过php中的数组修改叶子

[英]Recursively work through an array in php to modify the leaf

I hve the following array 我有以下数组

$array = array(
  array(
    "name" => "Jacky O'Macky",
    "groups" => array (
      array (
        "Joseph O'Brien",
        "Jenna Williams"
      ),
      array (
        "Shaq O'Neil",
        "John Fabio"
      )
    )
  ),
  array(
    "name" => "Nate O'Grady",
    "groups" => array (
      array (
        "Joseph O'Brien",
        "Jenna Williams"
      ),
      array (
        "Shaq O'Neil",
        "John Fabio"
      )
    )
  )
);

I would like to go through each array and use the htmlspecialchars() to handle the names with apostrophe's and keep the same multi-dimensionally array structure. 我想遍历每个数组,并使用htmlspecialchars()处理带有撇号的名称,并保持相同的多维数组结构。

Here is what I have so far 这是我到目前为止的

function htmlentities_array($array)
{
  if (is_array($array))
  {
    foreach($array as $key => $value)
    {
      if (is_string($value))
      {
        $array[$key] = htmlspecialchars($value);
      }
      else
      {
        $array[$key] = htmlentities_array($value);
      }
    }
  }
  else
  {
    $array = htmlspecialchars($array);
  }

  return $array;
}

I am calling this via $array = htmlentities_array(array) . 我通过$array = htmlentities_array(array)称呼它。 It seems to only work on the first level. 它似乎仅在第一级上起作用。

Here you go 干得好

array_walk_recursive ($array, function(&$v,$k){
  $v = htmlspecialchars($v, ENT_QUOTES);
});

print_r($array);

Output 输出量

Array
(
   [0] => Array
    (
        [name] => Jacky O'Macky
        [groups] => Array
            (
                [0] => Array
                    (
                        [0] => Joseph O'Brien
                        [1] => Jenna Williams
                    )

                [1] => Array
    ....

Simple... 简单...

Sandbox 沙盒

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM