这整个晚上都让我发疯。基本上,我需要在清理值后在多维数组中设置一个特定值,然后在验证值后再次设置(也许,取决于验证;如果验证失败,则需要将值设置为空字符串)。假设我有这个帖子数组:
$data['should']['be']['int'] = ' yjd';
清理该值后filter_var( $value, FILTER_SANITIZE_NUMBER_INT );
我得到一个空字符串。然后我需要以某种方式设置该值$data['should']['be']['int']
为空字符串。
然后该值被传递给验证函数,该函数失败,因为空字符串不是整数。同样,该验证值需要设置为$data['should']['be']['int']
到一个空字符串。
在整个验证过程开始之前,我将所有相关的键保存在一个数组中,所以当我需要清理或验证时,我已经得到了类似的东西:
$keys = array(
0 => 'should',
1 => 'be',
2 => 'int'
);
我尝试然后访问$data
通过引用在 foreach 循环中使用上述键的数组&$data
数组来设置新值,但无论我尝试什么,都无法做到。上面只是一个简化的例子。整个事情是验证类的一部分,所以我不知道传递的确切深度$data
array.
任何指示将不胜感激!感谢您的帮助!
Edit:以为我无法编辑帖子,但最终它只是我的互联网连接。请忽略我下面的评论。无论如何,这是我尝试递归调用的方法:
protected function set_value( &$data, $value ) {
foreach( $data as &$val ) {
if( is_array( $val ) ) {
$this->set_value( $val, $value );
} else {
$val = $value;
}
}
}
为了开始循环,我这样做了:
$this->set_value( $data[$keys[0]], $value );