我有一个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
答案 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']);
,那么它就有用了。
答案 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;
这个假设显然是错误的,因此你的其他假设也不起作用。