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); } } } 

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

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

Пытаться:

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

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

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

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