2012-12-05 60 views
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) ; 
+2

有你的頂部增加的session_start()你腳本? –

+0

是的。我想知道這是否也與它有關,這就是爲什麼我問這個問題是否可能超出範圍。它是在我使用$ ARRANGE = $$ test時定義的。 –

+0

不要使用變量 - 它們帶來麻煩。 –

回答

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; 
} 
+0

有趣的工作。我嘗試在Globals中註冊_SESSION,但它也不會傳輸。這使得它工作。乾杯。 –

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(); 
+0

哇,這很有趣。我通常假設我做錯了什麼。雖然這是問題。我想我無法做到這一點。感謝您清理它。 –

相關問題