【问题标题】:How to use a loop to simply repetitive PHP? [duplicate]如何使用循环来简单地重复 PHP? [复制]
【发布时间】:2020-05-27 19:42:05
【问题描述】:

我有以下变量需要以完全相同的方式处理。 如何使用循环简化此代码?

$var1 = Trim(stripslashes($_POST['var1']));
$var2 = Trim(stripslashes($_POST['var2']));
$var3 = Trim(stripslashes($_POST['var3']));
$var4 = Trim(stripslashes($_POST['var4']));
$var5 = Trim(stripslashes($_POST['var5']));
$var6 = Trim(stripslashes($_POST['var6']));
$var7 = Trim(stripslashes($_POST['var7']));
$var8 = Trim(stripslashes($_POST['var8']));

谢谢!

【问题讨论】:

  • foreach $_POST ??
  • 未测试,但数组映射应该可以帮助您在一行中完成它,$result = array_map('trim',array_map('stripslashes', $_POST)); 并且他们将该数组制作为单个变量
  • 我不同意目标副本,问题不只是循环遍历 $_POST 值,而是处理它们并创建完全相同的输出(变量变量),但要使用循环。跨度>
  • @GrumpyCrouton 为什么不同意?似乎有人不同意你的回答。我可以肯定地说,那个“某人”不是我。顺便说一句,你基本上给出了和骗子一样的答案。
  • @FunkFortyNiner 我说我为什么不同意。这是关于处理部分,而不是循环。答案的差异很大,我的实际上创建了与 OPs 问题相同的变量,欺骗中的答案不会创建 any 变量。它基本上根本不做 OPs 处理。顺便说一句,我并不是说这个问题不应该被关闭,我是说目标欺骗只回答了一半的问题,甚至不是重要的一半。

标签: php


【解决方案1】:

您可以遍历所有$_POST 值并使用大括号({})创建一个新变量。

foreach($_POST as $key => $value) {
    ${$key} = Trim(stripslashes($value));
}

此答案中的变量创建使用Variable variables

警告:这基本上与extract() 功能相同,后者被认为是不安全的。我建议您考虑寻找一种新方法来做您想做的事情。

【讨论】:

  • 这不是更优雅的解决方案,我会说。使用array_map 加盐一点extract 以适应Trim(stripslashes()) 对我来说看起来更好。
  • @β.εηοιτ.βε 是的,但我总是尽量避免extract,特别是考虑到这是不受信任的数据(但公平地说,这基本上是做同样的事情)
  • 如果不受信任的数据是 OP 的关注点,那么 stripslashes 也是一个不好的选择。 php.net/manual/en/function.filter-input.php
  • extract 与您对变量变量所做的相同。两者都非常不安全。
  • @Dharman 我知道这一点,我在上面的第二条评论中提到了这一点。刚刚更新了我的答案以包含该信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多