PHP迭代$ _POST并按名称使用值

bik*_*y77 19 php arrays

我有一个表单,其中包含名称为item1,item2,item13,item43等的多个字段,每次这些字段都不同,因为它们使用AJAX填充在表单中.

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

  foreach($_POST['itemX']['tagsX'] as $tag){
    inserttag($tag, X);
  }
Run Code Online (Sandbox Code Playgroud)

其中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))
Run Code Online (Sandbox Code Playgroud)

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

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);
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

Kyl*_*yle 29

foreach($_POST as $key => $value)
{
    if (strstr($key, 'item'))
    {
        $x = str_replace('item','',$key);
        inserttag($value, $x);
    }
}
Run Code Online (Sandbox Code Playgroud)


Til*_*lge 5

您可以通过循环$_POST使用foreach这样的:

foreach ($_POST as $key => $value) { ... }
Run Code Online (Sandbox Code Playgroud)

在循环中,您可以评估循环找到的每个键是否符合您的条件.像这样的东西:

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

我不是百分之百确定实际上什么是真实的,而你的问题只是一个占位符.也许我拿了一些东西,但事实并非如此.您可能需要更详细地解释您的愿望.;)