1

我正在尝试通过字符串将数组中的特定索引发送到一些 php 代码来描述我需要组合的数据。我遇到的问题是 SESSION 在函数 Str_To_Array 中似乎不可用。我在这里缺少关于范围的什么?另外,如果有人可以推荐更好的方法,我将不胜感激。PS我添加了包含以防包含该功能导致任何异常。

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) ;
4

2 回答 2

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();
于 2012-12-05T01:13:27.257 回答
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;
}
于 2012-12-05T01:36:17.033 回答