Что означает выражение $ {$ key} в конструкции "foreach"? - PullRequest
0 голосов
/ 30 января 2019

В моем проекте я получаю данные из HTML-формы в массив _POST.Затем мне нужно передать его в массив _SESSION, и, насколько я понимаю, мне нужно проверить полученные данные, чтобы продолжить работу с ними.Пытаясь понять, как это сделать, я нашел пример хорошо работающего кода, но я не очень хорошо его понимаю.Пожалуйста, помогите мне уточнить, что на самом деле означает этот код.

$arr = array(
    'a' => FILTER_SANITIZE_NUMBER_INT,
    'b' => FILTER_SANITIZE_NUMBER_INT,
    'c' => FILTER_SANITIZE_NUMBER_INT,
    'd' => FILTER_SANITIZE_NUMBER_INT,
        );

$arr1 = filter_input_array(INPUT_POST, $arr);

foreach ($all2 as $key => $value) {
    ${$key} = $value;
    $_SESSION[$key] = $value;
}

На самом деле проблема остается с

{
    ${$key} = $value;
    $_SESSION[$key] = $value;
}

Я не могу найти, что означает выражение $ {$ key}.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы динамически назначаете переменную, известную как переменная переменная.Возьмите этот пример

$arr = array(
    'foo' => 'bar',
);

foreach($arr as $k => $v)
    ${$k} = $v;

echo $foo; // bar

Поскольку ключ в этом массиве - foo, мы назначаем ключ как переменную.

0 голосов
/ 30 января 2019

Создает переменные на основе значения ключа в массиве.

Поэтому, если существует $_POST['name'], и вы просматриваете его, он создает переменную с именем $name и устанавливает ее равной$value.

$_SESSION[$key] в вышеприведенном примере также задает ключ имени в массиве SESSION.

Я считаю эту практику полезной, поскольку вместо ввода <?php echo $_POST['name']; ?> you can use <?php echo $name; ?>.Тем не менее, он имеет свои риски, потому что если name не передается в посте, вы пытаетесь отобразить переменную, которая не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...