PHP Итерируйте через $_POST и используйте значения по имени - программирование
Подтвердить что ты не робот

PHP Итерируйте через $_POST и используйте значения по имени

У меня есть форма, содержащая несколько полей с именами item1, item2, item13, item43 и т.д., каждый раз, когда эти поля различаются, поскольку они заполняются в форме с помощью AJAX.

Когда пользователь отправляет, мне нужно выполнить следующее:

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

где X = 1,2,13,43 и т.д. Как я могу перебирать значения $_POST и выполнять вышеизложенное только для значений тех, которые начинается с имени "item", за которым следует идентификатор X?

Решение, основанное на ответе Пионтек:

Опубликованные данные имеют следующий формат:

[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);
        }   
    }
}
4b9b3361

Ответ 1

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

Ответ 2

Вы можете пройти через $_POST с помощью foreach следующим образом:

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%, что на самом деле реально, а что-то просто заполнитель в вашем вопросе. Может быть, я взял что-то для солидного факта, которого на самом деле нет. Возможно, вам нужно будет объяснить свои пожелания более подробно.;)

Ответ 3

Try:

foreach($_POST as $key=>$value){
    inserttag($key, $value);
}

$key будет имя элемента, а $value будет значением.

Ответ 4

Прокрутитесь через $_POST и посмотрите, содержит ли ключ 'item'.

foreach($_POST as $key=>$value){
    if(preg_match('/item(\d*)/', $key, $match) === 1){
        inserttag($value, $match[1]);
    }
}