今天我有一个有趣的问题,我需要将$_SESSION['form'][$key]
中存储的数据转换为本地变量。
例如,假设$_SESSION['form']
包含以下会话密钥:
$_SESSION['form']['name']
$_SESSION['form']['email']
$_SESSION['form']['age']
如何将这些$_SESSION
变量转换为:
$name
$email
$age
我认为for
循环可以很好地解决这个问题,但我不确定如何在这种情况下正确地做到这一点。
感谢您的帮助!
答案 0 :(得分:2)
您需要使用PHP extract
函数。
在你的情况下它应该是
<?php
$name = "its existing variable"; \\ note this existing variable ;)
extract($_SESSION['form'], EXTR_PREFIX_SAME, "from_session");
echo "$from_session_name, $email, $age, $name\n";
?>
答案 1 :(得分:0)
解决问题的方法很简单:
extract($_SESSION['form'])
然而,这不是最好的方法。没有理由绝对需要将变量定义为其关联索引。您只需使用下标访问关联数组即可。
答案 2 :(得分:0)
我有同样的问题移植一个依赖于POST或GET变量的应用程序,这些变量在旧PHP版本中被视为本地变量(它也适用于任何关联数组,如_COOKIE或_SESSION)。
升级操作系统时,根本没有脚本工作,因此我做了一个解决方法。为此,我使用以下代码编写了一个小的PHP脚本(即“convertirVarsLocales.php”):
<?
$keys = array_keys($_GET);
$values = array_values($_GET);
for($i=0;$i<count($_GET);$i++) {
$$keys[$i] = $values[$i];
}
$keys = array_keys($_POST);
$values = array_values($_POST);
for($i=0;$i<count($_POST);$i++) {
$$keys[$i] = $values[$i];
}
?>
并包含此文件:
包括( “convertirVarsLocales.php”);
依赖于此功能的每个脚本。 这不是一个安全的选择,但似乎在安全的环境(在封闭网络上具有计费系统的用户)上工作正常。 希望这可以帮助。 此致