【问题标题】:arrays and foreach loops to work with input vars more efficiently数组和 foreach 循环更有效地处理输入变量
【发布时间】:2017-04-15 11:31:29
【问题描述】:

如果我有 20 个用户输入变量并且想要在 $var[0..19]、$_SESSION['var'[0..19]]、& $_POST['var'[0..19] 之间工作]],如:

$var0 = $_SESSION['var0'] = $_POST['var0'];

如何使用数组和 foreach 循环有效地做到这一点?

其他细节:

所以最初我一直在考虑尝试类似的方法:

$inputVars = array('var1'=>$var1, 'var2'=>$var2, 'var3'=>$var3, 'var4'=>$var4, 'var5'=>$var5)

$inputVarsS = array($_SESSION['inputVars = array('svar1'=>$_SESSION['var1']'], 'svar2'=>$_SESSION['var2'], 'svar3'=>$_SESSION['var3'], 'svar4'=>$_SESSION['var4'], 'svar5'=>$_SESSION['var5'])

$inputVarsP = array($_POST['inputVars = array('pvar1'=>$_POST['pvar1']'], 'pvar2'=>$_POST['pvar2'], 'pvar3'=>$_POST['pvar3'], 'pvar4'=>$_POST['pvar4'], 'pvar5'=>$_POST['pvar5'])

然后我想我可以这样做:

$inputVarsS['svar1'] = $inputVarsP['pvar1'];

将会话值 svar1 设置为发布值 pvar1。但我认为确实必须有一种更有效的方法来完成这些任务。

我想我可以轻松地拥有 $inputVars 数组并将 POST SESSION 值分配给键,但是如果我想同时使用 POST 和 SESSION 值怎么办?然后我假设我需要多个数组?

【问题讨论】:

  • foreach($var as $k=>$v) { ... $var[$k] ... $_SESSION['var'.$k] ... $_POST['var'.$k] }

标签: php variables


【解决方案1】:

你可以使用$$来定义一个变量名,但我认为使用数组$vars更好。

使用 $var0, $var1, ....,您可以像 echo $var4 一样访问它们

foreach(range(0, 19) as $index)
{
  $var = 'var' . $index;
  $$var = $_SESSION[$var] = $_POST[$var];
}

使用数组 $vars,并使用 echo $vars[4] 访问它们

foreach(range(0, 19) as $index)
{
  $var = 'var' . $index;
  $vars[$var] = $_SESSION[$var] = $_POST[$var];
}

【讨论】:

    【解决方案2】:

    您的问题缺乏信息,所以我的回答可能是错误的。

    你可以像这样复制整个数组:

    $_SESSION['post'] = $_POST;
    

    然后当你想从中提取变量时,你可以使用:

    extract($_SESSION['post']);
    

    所以如果$_POST['var0'] 存在,它将提取$var0

    但是,您绝不应该将发布的数据放在全局范围内。黑客可以使用它来将他们的变量注入到您的代码中。请始终先过滤输入。这个更好一点:

    extract($_SESSION['post'],EXTR_PREFIX_ALL,'post');
    

    所以它将是$post_var0 而不是$var0。但是,请确保您只获取所需的变量,并过滤它们的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多