$_POST и массив

256
23 мая 2018, 10:00

Вот форма:

<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');
}
Answer 1

Моя версия:

$a = array('text1' => 11, 'text2' => 22, 'text3' => 33);
$b = array('text1', 'text2');
var_dump(array_intersect_key($a, array_flip($b)));
Answer 2

Например, воспользоваться функцией: 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" 
}
READ ALSO
Вставка нескольких строк в mysql

Вставка нескольких строк в mysql

Есть форма из 4 наименований, как вставить строки в базу одним запросом через php?

246
Где искать плагины для PHP в частности для Laravel

Где искать плагины для PHP в частности для Laravel

Если я ошибаюсь исправьте меня но мне кажется что экосистема вокруг Javascript более структурирована и понятна нежели чем у PHP

239
yii2-widget-datepicker не подключается

yii2-widget-datepicker не подключается

На платформе OPENSERVER 52 велась разработка на yii 2 basic

207
Через раз работает CIblockElement::Update

Через раз работает CIblockElement::Update

Для элементов инфоблока нужно обновить PREVIEW_PICTURE и DETAIL_PICTUREИзображения уже находятся на сервере

217