Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Прокомментировать пару строк кода (https://javascript.ru/forum/server/26920-prokommentirovat-paru-strok-koda.html)

kilogram 27.03.2012 21:05

Прокомментировать пару строк кода
 
Расшифруйте логику работы что куда берется и получается в этом цикле.
Смущают вот эти названия в параметрах как ими манипуляция происходит ['doGo'] и ['known'] ?
Что откуда куда достается и вставляется куда?

Код:


<html><body>
<?php
if(@$_REQUEST['doGo']) {
        foreach(@$_REQUEST['known'] as $k=>$v) {
        if($v) echo "Вы знаете язык $k!<br>";
        else echo "Вы не знаете языка $k. <br>";
        }
}
?>
<form action="<?=$_SERVER['SCRIPT_NAME'] ?>" method="post">
Какие языки программирования вы знаете? <br>
<input type="hidden" name="known[php]" value="0">
        <input type="checkbox" name="known[php]" value="0">PHP<br>
<input type="hidden" name="known[php]" value="0">
<input type="checkbox" name="known[Perl]" value="0">Perl<br>
<input type="submit" name="doGo" value="Go">
</form>

</body></html>


T-sh 28.03.2012 15:18

у <input type="checkbox"> value должен быть равен 1.

суть простая:
форма методом POST передает на эту же страницу массив known[]

со значениями: php и perl , которые, если не отмечены, должны быть равны 0, а если отмечены, по логике должны быть равны 1.

php получает этот массив (все данные, передаваемые POST или GET) хранятся в глобалке: $_REQUEST.

и дальше проверяет (foreach(@$_REQUEST['known'] as $k=>$v) — разбирает массив на $k — индексы (т.е. php,perl и т.д.) и $v — значения (0 или 1).
если known[php] = true ( не равно 0, т.е. было выбрано в форме), то выводит на страницу "Вы значете язык php", если false (равно 0), то пишет, что вы не знаете :)

kilogram 28.03.2012 22:34

Я хотел спросить как попадают элементы массива known в МАССИВ РИКВЭСТ в этом коде?

kilogram 28.03.2012 22:54

То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" ----> $REQUEST['vasya']['Pypkin']?

T-sh 29.03.2012 10:34

Цитата:

Сообщение от kilogram (Сообщение 165456)
То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" ----> $REQUEST['vasya']['Pypkin']?

да, именно так :)

<input ... name="vasya['Pupkin']" ... value = "Значение">


в REQUEST будет:

$REQUEST['vasya']['Pypkin'] = "Значение"


Часовой пояс GMT +3, время: 22:54.