我试图通过字符串将特定索引发送到某些PHP代码来描述我需要组合的数据。我遇到的问题是在Str_To_Array函数中似乎没有SESSION可用。我对这里的范围缺少什么?如果有人能推荐一种更好的方式,我会非常感激。 PS我添加了include,包括该功能导致任何异常。
function Str_To_Array($str) {
$d = explode(':',$str) ;
print_r($d[0]) ;
$t = $d[0] ;
$n = $$t ;
if( !isset( $d[1] ) ) { return $n ; }
$n = $n[$d[1]] ;
return $n ;
}
include(DIR_ROOT . "php_function/Str_To_Array.php") ;
$test = '_SESSION' ;
$ARRANGE = Str_To_Array($test) ;<----this says _SESSION is undefined
print_r($ARRANGE) ;
$ARRANGE = $$test ;<----this works
print_r($ARRANGE) ;
答案 0 :(得分:1)
它就像是PHP的问题,只是尝试了下面的代码,在函数中,${'_SESSION'}
有效并且$$t
不起作用。这只发生在$_SESSION
,而不是其他超级全球$_POST
和$_GET
等。
<?php
session_start();
function foo() {
$t = '_SESSION';
$a = $$t; // not work
$b = ${'_SESSION'}; // works
var_dump($a, $b);
}
foo();
答案 1 :(得分:0)
这里很难遵循目的,但这应该有效
function getVar($str)
{
$vars = get_defined_vars();
$d = explode(':',$str) ;
if (isset($vars[$d[0]]) || array_key_exists($vars[$d[0]])) {
if (!empty($d[1]) && (isset($vars[$d[0]][$d[1]]) || array_key_exists($vars[$d[0]][$d[1]]))
return $vars[$d[0]][$d[1]];
return $vars[$d[0]];
}
return null;
}