我正在使用CakePHP 2.4.4。在Controller中我设置了一个数组:
$bla = array();
$bla[] = 'phone';
$bla[] = 'id';
$this->set(compact('bla'));
在我尝试调试此$bla
数组的视图中,它调试得很好。但是当我尝试检查这个数组中是否有一个字符串时,它会给我Undefined variable: bla
错误。整个视图的代码:
array_walk_recursive($data, function(&$val, $key) {
if (is_numeric($val) AND in_array($key, $bla)) { //this line gives me error: Undefined variable $bla, but it is actually defined
if (ctype_digit($val)) {
$val= (int) $val;
} else {
$val = (float) $val;
}
}
});
答案 0 :(得分:2)
您在array_walk_recursive
中创建的匿名函数无法访问$bla
以及任何其他外部变量。您应该明确将此变量传递给此函数use
:
array_walk_recursive($data, function(&$val, $key) use ($bla) {
if (is_numeric($val) AND in_array($key, $bla)) {
if (ctype_digit($val)) {
$val= (int) $val;
} else {
$val = (float) $val;
}
}
});