2012-02-22 15 views
1

すべて、 idに基づいてセッション変数を作成しました。特定の文字列を持つ現在のセッション変数をすべて取得します。

$_SESSION['test_variable_1']; 
$_SESSION['test_variable_2']; 
$_SESSION['test_variable_3']; 

私はPHPでこれらのすべてを読み、基本的には変数の末尾IDのJSON配列を返すしたいと思います。だから、例えば私は、次の変数を持つことができます。だから私はこの例で1,2,3を返すようにしたいと思います。私が見ているセッション変数は、常にtest_variable_で始まり、取得したいIDが続きます。これを行う最善の方法は何ですか?

ありがとうございます!

答えて

1

良いアイデアは、あなたが$_SESSION['test_variable'][1]を使うなどすることができるように、あなたはこれらのキーをスキャンするためにpreg_grepのようなものを使用することができ、ちょうどセッションスーパーグローバル内のサブ配列を作成してきただろうが:

$keys = array_keys($_SESSION); 
$matches = preg_grep('/^test_variable_\d+$/', $keys); 

foreach($matches as $key) { 
    $digit = substr($key, 13); // extract the digit. 
    echo $_SESSION[$key]; 
} 
+0

私はこのアイデアが気に入っていますが、どうすればこれらの変数を設定できますか? idsのサイズが1で、次にidsのサイズが34882の場合、これは機能しますか? – user1048676

+0

\ d +部分はANY桁を探しますので、問題なく1と34882に一致します。しかし、 'test_variable_'と数字のないものはまったくマッチしません。おそらく良いことです。 –

1

これは何か?

$ids = array(); 

foreach($_SESSION as $var => $value) { 
    if (strpos($var, 'test_variable_') === 0) { 
    $ids[] = str_replace('test_variable_', '', $var); 
    } 
} 
関連する問題