1

我有一个 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
4

5 回答 5

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/>";
于 2012-12-20T02:09:28.143 回答
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;

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

于 2012-12-20T09:57:54.913 回答
0

session_start()在顶部失踪了。在那之前你不能一起工作$_SESSION

于 2012-12-20T09:50:09.413 回答
0

现在我明白了(我很伤心,我花了这么长时间)。

array combine像@ace 所说的那样工作。

它从 arr1 的值(所以 '' 和 '' 因为它们没有在任何地方设置,$_SESSION['a'] = '' && $_SESSION['b'] = ''即数组将是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

于 2012-12-20T02:57:25.417 回答
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);
于 2012-12-20T02:21:27.290 回答