Ответ 1
foreach($_POST as $key => $value)
{
if (strstr($key, 'item'))
{
$x = str_replace('item','',$key);
inserttag($value, $x);
}
}
У меня есть форма, содержащая несколько полей с именами 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%, что на самом деле реально, а что-то просто заполнитель в вашем вопросе. Может быть, я взял что-то для солидного факта, которого на самом деле нет. Возможно, вам нужно будет объяснить свои пожелания более подробно.;)
Try:
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]);
}
}