递归编辑多维数组

时间:2014-07-02 08:15:23

标签: php arrays recursion multidimensional-array

我有一个包含一些需要修改的文本字符串的多维数组。我最初的想法是递归地迭代它并进行编辑,但我已经意识到在内部调用函数必须打破引用,我无法看到解决方法。

function mysqlifyArray($array)
  {
      global $connection;
      foreach ($array as &$item)
      {
          if (is_string($item))
          {
              echo $item;
              $item = mysqli_real_escape_string($connection, $item);
              echo $item.'<br>';
          }
          elseif (is_array($item))
          {
              $item = mysqlifyArray($item);
          }
      }
      unset($item);
      return $array;
  }

3 个答案:

答案 0 :(得分:1)

Set reference in your function declaration

function mysqlifyArray(&$array)
{
    // ....
}

答案 1 :(得分:1)

或者,您可以使用内置的array_walk_recursive()

function mysqlify(&$value, $index) {
    global $connection;
    return $value = mysqli_real_escape_string($connection, $value);
}

function mysqlify_array(&$array) {
    return array_walk_recursive($array, 'mysqlify');
}

答案 2 :(得分:0)

这可能会对您有所帮助:

function mysqlifyArray($array)
{
    global $connection;
    foreach ($array as $item)
    {
        if (is_string($item)) {
            echo $item;
            $item = mysqli_real_escape_string($connection, $item);
            echo $item.'<br>';
        } else if (is_array($item)) {
            $item = mysqlifyArray($item);
        }

        unset($item);
    }

    return $array;
}

注意:我不确定为什么使用$ item变量的引用,而是可以在方法中使用引用变量。