CakePHP:未定义的变量,但已定义

时间:2017-03-30 11:27:43

标签: php

我正在使用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;
            }
        }
    });

1 个答案:

答案 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;
        }
    }
});