回调函数递归数组遍历外的访问变量

时间:2018-07-25 09:46:42

标签: php scope

假设我有以下示例代码:

<?php

$arr = array(0 => array(0 => 1, 1 => 2), 1 => 3);
$val = '';

function test($item, $key){
    if($key === 0){
        $val = 'found';
    }
}

array_walk_recursive($arr, 'test');

?>

显然$valtest()的范围之外。相反,它只是在函数内部设置$val并在完成后立即销毁它。如何在函数内部设置值?

注意:我很确定这是我应该知道的简单事情。已经工作了几个小时,无法再忍受了。希望你们能帮助我。预先感谢!

1 个答案:

答案 0 :(得分:-1)

您可以使用关键字

  

全局

$arr = array(0 => array(0 => 1, 1 => 2), 1 => 3);
$val = '';

function test($item, $key){
    if($key === 0){
        global $val;
        $val = 'found';
    }
}

array_walk_recursive($arr, 'test');

echo $val;