Вот форма:
<form action="/test">
<input type="text" name="text1">
<input type="text" name="text2">
<input type="text" name="text3">
<input type="submit" name="do_send" value="Send">
</form>
Итак, если я вар дампну $_POST, я получу массив вида:
array(3) {
["text1"] => string(5) "Text1"
["text2"] => string(5) "Text2"
["text3"] => string(5) "Text3"
}
У меня есть массив:
$arr = array('text1','text3');
Как мне вытянуть ключи таким образом, чтобы из $_POST отфильтровался ключ 'text2' ибо он не нужен?
То есть в форме 3 инпута а после валидации у меня получилось всего два ключа?
array(2) {
["text1"] => string(5) "Text1"
["text3"] => string(5) "Text3"
}
Я хочу упростить себе жизнь и сделать маленькую валидацию, а не писать тонны мусорного кода для проверки.
Поможете?
Дополняю: $_POST - это и есть $_POST['text1'] и тд...
public function getEditMain() {
$smarty = $this->loadsmarty();
$this->ValidAdmin();
$data = $_POST;
$mtype = current(R::getAssoc('SELECT type FROM `mainconfigs`'));
$mtitle = current(R::getAssoc('SELECT title FROM `mainconfigs`'));
$mtemplate = current(R::getAssoc('SELECT template FROM `mainconfigs`'));
$metarobots = current(R::getAssoc('SELECT meta_robots FROM `mainconfigs`'));
$metatitle = current(R::getAssoc('SELECT meta_og_title FROM `mainconfigs`'));
$metadescr = current(R::getAssoc('SELECT meta_og_descr FROM `mainconfigs`'));
$metakeys = current(R::getAssoc('SELECT meta_og_keys FROM `mainconfigs`'));
$metaurl = current(R::getAssoc('SELECT meta_og_url FROM `mainconfigs`'));
$metaimg = current(R::getAssoc('SELECT meta_og_img FROM `mainconfigs`'));
$metatype = current(R::getAssoc('SELECT meta_og_type FROM `mainconfigs`'));
$smarty->assign('title',$mtitle);
$smarty->assign('meta_og_title',$mtitle);
$smarty->assign('template',$mtemplate);
$smarty->assign('meta_og_title',$metatitle);
$smarty->assign('meta_og_descr',$metadescr);
$smarty->assign('meta_og_keys',$metakeys);
$smarty->assign('meta_og_url',$metaurl);
$smarty->assign('meta_og_img',$metaimg);
$smarty->assign('meta_og_type',$metatype);
if ($mtype) {
$smarty->assign('editmainstatus',$mtype);
}
if ($metarobots == 'index,follow') {
$smarty->assign('metaindex1','checked="checked"');
} else if ($metarobots == 'index,nofollow') {
$smarty->assign('metaindex2','checked="checked"');
} else if ($metarobots == 'noindex,nofollow') {
$smarty->assign('metaindex3','checked="checked"');
}
if (isset($data['main_config'])) {
$arrs = array('title','meta_og_title','meta_og_descr','meta_og_keys','meta_og_url','meta_og_img','meta_og_type');
var_dump(array_intersect($data, array_flip($arrs))); // У меня помимо полей есть ещё много мусорных элементов, как мне их отфильтровать? array(1) { ["radio"]=> string(1) "1" }
exit;
}
$smarty->assign('module','admin/mainedit.tpl');
$smarty->assign('configsArray',$table);
return $smarty->display('admin/html.tpl');
}
Моя версия:
$a = array('text1' => 11, 'text2' => 22, 'text3' => 33);
$b = array('text1', 'text2');
var_dump(array_intersect_key($a, array_flip($b)));
Например, воспользоваться функцией: array_intersect:
$_POST = array(
'text1' => 'text1',
'text2' => 'text2',
'text3' => 'text3',
'text4' => 'text4'
);
$arr = array('text1', 'text3');
var_dump(array_intersect($_POST, $arr));
Вернет:
array(2) {
["text1"]=> string(5) "text1"
["text3"]=> string(5) "text3"
}
https://repl.it/repls/BonyDecentPercent
Для сравнения по ключам, можно воспользоваться функцией array_intersect_key и поменять местами ключи и значения 2-го массива с помощью функцииarray_flip:
var_dump(array_intersect_key($_POST, array_flip($arr)));
Вывод:
array(2) {
["text1"]=> string(5) "text1"
["text3"]=> string(5) "text3"
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости