小编sha*_*abu的帖子

如何通过引用动态设置多维数组中的值

这整晚都让我疯狂.基本上,我需要再次消毒的值,然后后设置多维数组中的特定值(也许,取决于验证,如果验证失败,则该值需要被设置为空字符串)验证后的值.假设我有这个帖子数组:

$data['should']['be']['int'] = ' yjd';
Run Code Online (Sandbox Code Playgroud)

在清理了值后,filter_var( $value, FILTER_SANITIZE_NUMBER_INT );我得到了一个空字符串.然后我需要以某种方式将值设置为$data['should']['be']['int']空字符串.

然后将此值传递给验证函数,该函数失败,导致空字符串不是整数.同样,该验证值将需要设置$data['should']['be']['int']为空字符串.

在整个验证过程开始之前,我将所有相关的密钥保存在一个数组中,所以当我需要清理或验证时,我有这样的东西:

$keys = array(
    0 => 'should',
    1 => 'be',
    2 => 'int'
);
Run Code Online (Sandbox Code Playgroud)

我试图$data通过引用&$data数组来设置新值,然后使用foreach循环中的上述键访问数组,但无论我尝试什么,都无法使用.以上只是一个简化的例子.整个事情是验证类的一部分,所以我不知道传递的$data数组的确切深度.

任何指针将不胜感激!谢谢你的帮助!

编辑: 以为我无法编辑帖子,但它最终只是我的互联网连接.请忽略我在下面的评论.无论如何,这是一个我尝试递归调用的方法:

protected function set_value( &$data, $value ) {
    foreach( $data as &$val ) {
        if( is_array( $val ) ) {
            $this->set_value( $val, $value );
        } else {
            $val = $value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为了开始循环我做了这个:

$this->set_value( $data[$keys[0]], $value );
Run Code Online (Sandbox Code Playgroud)

php pass-by-reference multidimensional-array

7
推荐指数
1
解决办法
6360
查看次数