У меня есть форма, которая содержит несколько полей с именами 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]); } }