CakePHP:未定义变量,但已定义
我使用的是CakePHP2.4.4。在控制器中,我正在设置一个数组:CakePHP:未定义变量,但已定义,php,Php,我使用的是CakePHP2.4.4。在控制器中,我正在设置一个数组: $bla = array(); $bla[] = 'phone'; $bla[] = 'id'; $this->set(compact('bla')); 在视图中,当我尝试调试这个$bla数组时,它调试得很好。但是,当我尝试检查这个数组中是否有一个字符串时,它给出了未定义变量:bla错误。整个视图的代码: array_walk_recursive($data, function(&$val, $key
$bla = array();
$bla[] = 'phone';
$bla[] = 'id';
$this->set(compact('bla'));
在视图中,当我尝试调试这个$bla
数组时,它调试得很好。但是,当我尝试检查这个数组中是否有一个字符串时,它给出了未定义变量: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;
}
}
});
您在
array\u walk\u 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;
}
}
});
您在
array\u walk\u 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;
}
}
});
匿名函数无法访问
$bla
匿名函数无法访问$bla
谢谢您的快速回答。你说得很对!谢谢你的快速回答。你说得很对!