PHP:使用 eval() 从数组变量(字符串)获取值无效

PHP: get value from array variable (which is a string) using eval() not working

我有这样的功能:

function getvar() { 
  $n = func_num_args(); 
  $l = func_get_args(); 
  $t = '$_COOKIE';
  for ($i = 0; $i < $n; $i++) { 
    $t .= "['".$l[$i]."']"; 
  }
  // $t would be like $_COOKIE['arg1']['arg2']['arg3']
  return eval($t); 
}

我也有 cookie 在 24 小时后过期:

$_COOKIE['key1']['key2']['key3'] = 'TEST';

然后我调用 getvar() 使用:

$test = getvar('key1', 'key2', 'key3');
echo $test; //result should be 'TEST'

结果什么也没有。

使用array_reduce()

$_COOKIE = ['key1' => [ 'key2' => [ 'key3' => 'TEST' ]]];

function getvar(...$args)
{
    return array_reduce($args, fn ($a, $k) => $a[$k], $_COOKIE);
}

print_r(getvar('key1', 'key2', 'key3'));

问题已解决。

我改

return eval($t); 

return eval('echo ' . $t . ';');

现在它按预期工作了。