Php 数组"走"递归can';当我使用函数htmlspecialchars时无法工作?

Php 数组"走"递归can';当我使用函数htmlspecialchars时无法工作?,php,htmlspecialchars,Php,Htmlspecialchars,我使用array\u walk\u recursive将htmlspecialchars应用于我的数组值,但它不起作用,htmlspecialchars在我手动使用时起作用; 这是我的密码: $new[] = "<a href='test'>Test</a><li><div>"; var_dump(array_walk_recursive($new,'htmlspecialchars')); // true var_dump($new) ;

我使用array\u walk\u recursive将htmlspecialchars应用于我的数组值,但它不起作用,htmlspecialchars在我手动使用时起作用; 这是我的密码:

 $new[] = "<a href='test'>Test</a><li><div>";
 var_dump(array_walk_recursive($new,'htmlspecialchars')); // true
 var_dump($new) ; // no change
$new[]=“
  • ”; 变量转储(数组遍历递归($new,'htmlspecialchars');//真的 var_dump($new);//无变化
  • 这是因为原始数组不会被修改,除非您自己在回调函数中修改它

    您的回调函数基本上是:

    function($item, $key) {
        htmlspecialchars($item);
    }
    
    因此,在调用函数时,不会存储任何内容,也不会更改原始数组

    如果要修改函数中的值,可以通过引用传递:

    function(&$item, $key) {
        $item = htmlspecialchars($item);
    }
    
    因此,结果如下所示:

     $new[] = "<a href='test'>Test</a><li><div>";
     array_walk_recursive($new, function(&$item, $key) {
            $item =  htmlspecialchars($item);
     });
     var_dump($new) ; // change!
    
    $new[]=“
  • ”; 数组\u walk\u递归($new,function(&$item,$key){ $item=htmlspecialchars($item); }); var_dump($new);//改变
  • 如果愿意,您当然可以定义一个单独的函数。

    在以下定义中:

    array\u walk\u recursive-将用户函数递归应用于每个 数组成员

    因此,您需要创建一个使用htmlspecialchars的用户定义函数,如下所示:

    $new[] = "<a href='test'>Test</a><li><div>";
    array_walk_recursive($new, "specialChars");
    var_dump($new);
    
    function specialChars(&$value) {
        $value = htmlspecialchars($value);
    }
    

    也许有用@Terminus我已经解决了,谢谢!!!
    array (size=1)
      0 => string '&lt;a href='test'&gt;Test&lt;/a&gt;&lt;li&gt;&lt;div&gt;' (length=56)