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

时间:2018-09-11 04:12:30

标签: php mysql arrays

我拥有以下数组

$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"
      )
    )
  )
);

我想遍历每个数组,并使用htmlspecialchars()处理带有撇号的名称,并保持相同的多维数组结构。

这是我到目前为止所拥有的

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;
}

我通过$array = htmlentities_array(array)打电话给我。它似乎只在第一级起作用。

1 个答案:

答案 0 :(得分:6)

你在这里

Group.objects.exclude(
    id__in=request.user.groups.all().values_list("id", flat=True)
)
.annotate(users=Count("user"))
.order_by("-users")

输出

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

print_r($array);

简单...

Sandbox