точка (.) не поддерживается в качестве символа ключей массива после отправки формы

У меня есть массив, как:

$arr = array("a.b" => "a.b", "b.c" => "b.c");

Когда я печатаю это, он просто отображает

Array ( [a.b] => a.b [b.c] => b.c )

Но когда я использую цикл, чтобы использовать ключ и значение в имени флажка и такие значения, как:

<form action="" method="post">
<ul>
<?php
foreach($arr as $k => $v){?>
<li><input type="checkbox" name="<?php echo $v;?>" value="<?php echo $k;?>"><?php echo $v;?></li>
<?php }?>
</ul>
<input name="sub" type="submit"/>
</form>

Когда я нажимаю кнопку отправки, результат выглядит так:

Array ( [a_b] => a.b [b_c] => b.c [sub] => Submit )

Посмотрите на выходной массив, ключи изменены, точка (.) Заменяется на _.

Почему это случилось ??

2

Решение

Пожалуйста, посмотрите на переменная. внешняя документация

Точки и пробелы в именах переменных преобразуются в подчеркивания. Например <input name="a.b" /> становится $ _REQUEST [«a_b»].

Вы можете преодолеть это с помощью file_get_contents (‘php: // input’); а затем чтение и синтаксический анализ ввода самостоятельно, если вы не можете избежать точек в именах переменных, которые идут через GET или POST.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector