PHP 传递数组作为引用

标签 php

我正在编写一个类来清理通过 ajax 调用传递给 PHP 的字符串,当我将一个字符串传递给这个类时它工作正常但是将数组作为引用传递并且它不会工作。

class Sanitize {

    public static function clean (&$str) {
        self::start($str);
    }

    public static function cleanArray (&$array) {
        if (self::arrayCheck($array)) {
            foreach ($array as $key => $value) {
                if (self::arrayCheck($value)) {
                    self::cleanArray($value);
                } else {
                    self::clean($value);
                }
            }
        } else {
            throw new Exception ('An array was not provided. Please try using clean() instead of cleanArray()');
        }
    }

    private static function start (&$str) {
        $str .= '_cleaned';
    }

    private static function arrayCheck ($array) {
        return (is_array($array) && !empty($array));
    }
}

测试代码:

$array = array(
    'one' => 'one',
    'two' => 'two',
    'three' => 'three',
    'four' => 'four'
);
echo print_r($array, true) . PHP_EOL;
Sanitize::cleanArray($array);
echo print_r($array, true) . PHP_EOL;

输出:

Array
(
    [one] => one
    [two] => two
    [three] => three
    [four] => four
)

Array
(
    [one] => one
    [two] => two
    [three] => three
    [four] => four
)

我是否遗漏了什么,或者无法在 PHP 中嵌套引用传递?

最佳答案

您丢失了 foreach 中的引用。将其更改为此,它将起作用:

foreach( $array as $key => &$value ) {

关于PHP 传递数组作为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298298/

相关文章:

php - 如何在html复选框中加载mysql数据

php - 将 unicode 转换为 html 实体十六进制

javascript - 无法使用 'in' 运算符在中搜索 '728'

php - MySQL:SELECT * INTO OUTFILE 始终返回空数组且没有错误代码?

php - 来自 PHP 脚本的随机内容在重新加载时不刷新

php - 防止从详细信息页面进行sql注入(inject)

php - 正确的 CSS 文件未加载,其他地方的另一个已加载

php - 如何隐藏 laravel 中的关系列?

php - 如何在 yii 1 框架中将表格数据下载为 excel 表格

php - 如何在用户输入的 PHP 中使用 getter 和 setter