PHP 循环访问 $_POST 并按名称使用值

2022-08-30 16:08:01

我有一个表单,其中包含许多字段,名称为ite1,item2,item13,item43等,每次这些字段都不同,因为它们在表单中填充了AJAX。

当用户提交时,我需要执行以下操作:

  foreach($_POST['itemX']['tagsX'] as $tag){
    inserttag($tag, X);
  }

其中 X = 1,2,13,43 等。如何迭代 $_POST 值,并仅对其名称以“item”开头,后跟 X 标识符的值执行上述操作?

基于Piontek答案的解决方案:

发布的数据具有以下格式:

[item38] => Array([tags38] => Array([0] => aaa,[1] => bbb))
[item40] => Array([tags40] => Array([0] => ccc,[1] => ddd))
[item1] =>  Array([tags1] => Array([0] => eee,[1] => zzz))

这就是我解析和使用它的方式:

foreach($_POST as $key => $value){
    if (strstr($key, 'item')){
        $id = str_replace('item','',$key); 
        foreach($_POST['item'.$id]['tags'.$id] as $tag){
            inserttag($tag, $id);
        }   
    }
}

答案 1
foreach($_POST as $key => $value)
{
    if (strstr($key, 'item'))
    {
        $x = str_replace('item','',$key);
        inserttag($value, $x);
    }
}

答案 2

你可以像这样循环:$_POSTforeach

foreach ($_POST as $key => $value) { ... }

在循环中,您可以评估循环找到的每个键是否与您的条件匹配。像这样:

foreach ($_POST as $key => $value){
   if (substr($key, 0, 4) == "item") {
      $identifier = substr($key, 4);
      if (isset($value['tag' . $identifier])) { inserttag('tag', $identifier); }
   }
}

我不是100%确定什么是真实的,什么只是你问题中的占位符。也许我把一些东西当作确凿的事实,但实际上并非如此。您可能需要更详细地解释您的愿望。;)