使用array_combine的unidentified变量,使用存储在数组中的$ _SESSION

时间:2012-12-20 01:51:06

标签: php arrays session

我有一个2阵列:

 $arr1 = array($_SESSION['a'], $_SESSION['b']);
 $arr2 = array("1", "2");

我使用此代码工作:

 extract(array_combine($arr1, $arr2));

输出将是:

 $_SESSION['a'] = 1;
 $_SESSION['b'] = 2;

当我将它存储到另一个数组时,它是输出的值:

 $_SESSION['abcd'] = array($_SESSION['a'], $_SESSION['b']);

当我运行它时,输出告诉我

 Unidentified a
 Unidentified b

5 个答案:

答案 0 :(得分:0)

该值已被分配。我没有遇到任何问题。这个

session_start();
$_SESSION['a']=a;
$_SESSION['b']=b;'
$arr1 = array($_SESSION['a'], $_SESSION['b']); 
$arr2 = array(1,2);
extract(array_combine($arr1, $arr2));
echo $_SESSION['a']."<br/>";
echo $_SESSION['b']."<br/>";
$_SESSION['abcd'] = array($_SESSION['a'], $_SESSION['b']);
echo $_SESSION['abcd'][0]."<br/>";
echo $_SESSION['abcd'][1]."<br/>";

答案 1 :(得分:0)

如果对此使用array_combine,则要求$_SESSION['a']$_SESSION['b']具有值。您还需要在访问$_SESSION;

之前进行会话
$arr1 = array($_SESSION['a'], $_SESSION['b']);
$arr2 = array("1", "2");

假设你有:

session_start();
$_SESSION['a'] = 'keya';
$_SESSION['b'] = 'keyb';
$arr1 = array($_SESSION['a'], $_SESSION['b']);
$arr2 = array("1", "2");
extract(array_combine($arr1, $arr2));
// array_combine will return
// Array
// (
//     [keya] => 1
//     [keyb] => 2
// )
// then running extract on this array will produce
echo $keya; // "1"
echo $keyb; // "2"

因此,当您存储在另一个会话变量中时,它应该看起来像这样

$_SESSION['abcd'] = array($keya, $keyb);

答案 2 :(得分:0)

现在我明白了(我已经把它花了很长时间)。

array combine适用于@ace所说的。

从arr1的值获取变量的名称(所以''和''因为它们没有被设置在任何地方,即$_SESSION['a'] = '' && $_SESSION['b'] = ''),然后来自arr2的值(所以'1'和'1')意味着你的组合数组将是array('' => 2)(由于被覆盖)。

values of array1 supplies keys

values of array2 supplies values

这意味着提取的变量在技术上是$(如''的名称,但显然,这不是一个有效的变量)。

如果您设置了$_SESSION['a'] = 'aaa'; $_SESSION['b'] = 'bbb';,然后使用$_SESSION['abcd'] = array($aaa, $bbb);代替$_SESSION['abcd'] = array($_SESSION['a'], $_SESSION['b']);,那么它就有用了。

http://codepad.org/xH9tEwxR

答案 3 :(得分:0)

您在顶部缺少session_start()。在此之前,您无法使用$_SESSION

答案 4 :(得分:0)

array($_SESSION['a'], $_SESSION['b'])

这使得当前$_SESSION['a']$_SESSION['b']的新数组。我们假设它们没有设置,因此null。结果是array(null, null)

变量是的占位符。此处使用,而不是变量本身。

extract(array_combine($arr1, $arr2));
     

输出将是:

$_SESSION['a'] = 1;
$_SESSION['b'] = 2;

这个假设显然是错误的,因此你的其他假设也不起作用。