微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 ) {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐