<button type="submit" name="apply[<?php echo $temp['j_id']; ?>]"> Apply</button>
$temp['j_id'];
назначается случайным образом, что является уникальным. Я хочу знать, какая кнопка j_id была нажата на отправленной странице, используя $ _POST и isset
После нажатия кнопки «Применить» это происходит по-другому — здесь я хочу проверить, какие значения apply [] были установлены с помощью $ _POST, т.е. if(isset($_POST['apply'][]))
Как проверить isset для $ _POST для двумерных массивов
Прочитав вопрос несколько раз, я думаю, что теперь понимаю. Проверьте, как я решил проблему в этом примере кода в Runable.
Как проверить isset для $ _POST для двумерных массивов?
if ( isset($_POST['apply']) &&
isset($_POST['apply']['someuniqueid']) )
{
//Do stuff
}
где someuniqueid
это идентификатор кнопки.
В вашем случае это someuniqueid
это именно то, что вы хотите понять. Я предполагаю, что этот «идентификатор» имеет смысл, и вы заранее знаете все возможные идентификаторы. В этом случае вам нужно проверять каждый возможный идентификатор, пока не будет найдено совпадение. Простой способ — сохранить эти идентификаторы в массиве, а затем перебрать его.
$possibleIDs = array('a', 'b', 'c', 'd');
if ( isset($_POST['apply']) ) {
foreach ($possibleIDs as $id) {
if ( isset($_POST['apply'][$id]) ) {
// Do stuff
}
}
}
Тем не менее, это довольно неэффективно, потому что вам нужно создать массив с идентификаторами, а затем перебрать его, чтобы найти значение. На самом деле не имеет большого смысла использовать массив «ключ» в качестве «значения». Кроме того, «ключевые» имена могут быть преобразованы / изменены (например, array('8' => 'foo')
будет преобразован в array(8 => 'foo')
,
ИМХО, лучший подход — назначить этот идентификатор значению кнопки.
<button type="submit" name="apply" value="<?php echo $temp['j_id']; ?>"> Apply</button>
В принимающем скрипте ваш идентификатор кнопки $_POST['apply']
значение.
Вы можете проверить этот пример в Runable. Обратите внимание, что только нажатой кнопке присваивается значение. Другие кнопки не представлены.
Других решений пока нет …