
kilogram
User-
Posts
120 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Calendar
Store
Everything posted by kilogram
-
<html><body> <?php ## Печать всей таблицы ASCII-символов. // Сначала создаем массив того, что мы собираемся выводить, // не заботясь о форматировании (дизайне) информации for ($i=0,$x=0; $x<16; $x++) { for ($y=0; $y<16; $y++) { $chars[$x][$y] = array($i, chr($i)); $i++; } } // Теперь выводим накопленную информацию, используя идеологию // вставки участков кода в HTML-документ ?> <table border=1 cellpadding=3 cellspacing=0> <? foreach ($chars as $row) {?> <tr> <? foreach ($row as $cell) { ?> <td> <?=$cell[0]?>: <b><tt><?=$cell[1]?></tt></b> </td> <? }?> </tr> <? }?> </table> </body></html> Как работает вывод двумерного ассоциативного массива в этом коде? $chars[$x][$y] = array($i, chr($i)); - здесь каждому элементу созданного массива $chars присваиватся значение результата анонимного вызова массива array без имени?
- 1 reply
-
- 1
-
-
Вот попробовал использовать эту функцию <html><body> <?php function privet($a,${ echo $a,' ',$b; } call_user_func('privet',5,8); ?> </body></html> тоже самое можно написать и так без неё,даже короче выходит: <html><body> <?php function privet($a,${ echo $a,' ',$b; } privet(5,8); ?> </body></html> Зачем тогда она?
-
Со всем я понял, не понял вот эту строку echo $b+1,"<br>";, не нужно было все комментировать, ответить лишь то что меня интересовало. А оказывается все совсем просто, я думал что после строки echo $b+1,"<br>" в строке ниже return $b * $b; используется те же 11, а оказывается нет, потому что здесь нету присваивания, а просто прибавление на единичку и все.
-
<?php function father($a){ echo $a, "<br>"; function child(${ echo $b+1,"<br>"; return $b * $b; } return $a * $a * child($a); } $result = father(10); echo $result; echo '<br>'; ?> Если взять отдельно такой код, получается что после этой строки echo $b+1,"<br>"; выводится 11, но следующая за ней строка она не берет это число 11 и не подставляет в переменную $b, почему подставляется 10, а не 11 в строке ниже? return $b * $b;
-
<html><body> <?php function father($a){ echo $a, "<br>"; function child(${ echo $b+1,"<br>"; return $b * $b; } return $a * $a * $child($a); } father(10); child(30); ?> </body></html> То есть передав аргумент 10 функции father, объявив нвутри этой функции father функцию child, тоже с одним параметром, я получается ему передаю то же значение 10, которое увеличивается на 1 после этой строки echo $b+1,"<br>"; и стает 11? Ещё, попробовал убрать вот эту строку return $b * $b; и код со всем не изменился, а выдает те же значения что и с этой строкой, что и без неё? Почему? Насчет этой строки: return $a * $a * child($a); здесь получается 10*10*30 что ли? Как считается?
-
<html><body> <?php function selfcount() { static $count = 0; $count++; echo $count; } for($i=0; $i<5; $i++) selfcount(); ?> </body></html> Почему со словом static в результате получается 12345, а без этого слова 11111?
-
Читаю в книге про глобальные переменные. Правильно ли так объявлять глобальные переменные? Удобно и хорошо ли это? Вижу тут удобный доступ сразу из локальной функции прямо в глобалный массив. <html><body> <?php $monthes = array( 1 => "Январь", 2 =>"Февраль", 3=>"Март", 4=>"Апрель" ); function getMonthName($n){ global $monthes; return $monthes[$n]; } echo getMonthName(2); ?> </body></html>
-
А в этой строке: <?=selectItems($names, $_REQUEST['surname'])?> $names - это в первый параметр функции подставился сам массив name который описан выше? В массиве цикл форич он возвращает за первым разом в первый параметр $names попадает значение "Weaving", 2 раз - "Goddard", 3-ий раз - "Taylor" после отправки формы? Во второй параметр также после отправки формы из-за цикла формч, тоже 3 раза во второй параметр попадают значения ключей цикла форич?
-
Скажите ,вот когда мы написали "<select name="surname">" это равносильно мы создали переменную $surname с которой можем делать что угодно? Ещё, немного не понятно, каким образом попадают в глобальный ассрциативный массив REQUEST значения surname(Фамилия) с массива $names? Если да, каким образом?
-
<html><body> <?php function selectItems($items, $selected=0) { $text = ""; foreach($items as $k=>$v){ if($k == $selected) $ch = " selected"; else $ch = ""; $text .= "<option$ch value='$k'>$v</option>\n"; } return $text; } $names = array( "Weaving" => "Hugo", "Goddard" => "Paul", "Taylor" => "Robert", ); if(isset($_REQUEST['surname'])){ $name = $names[$_REQUEST['surname']]; echo "Вы выбрали: {$_REQUEST['surname']} - {$name} "; } ?> <!-- Форма для выбора имени человека --> <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post"> Выберите имя: <select name="surname"> <?=selectItems($names, $_REQUEST['surname'])?> </select><br> <input type="submit" value="Узнать фамилию"> </form> </body></html> НЕ совсем понятна передача параметров функции. Не понятны вот эти 2 строки, как они работают if($k == $selected) $ch = " selected"; else $ch = ""; $text .= "<option$ch value='$k'>$v</option>\n"; И как происходит работа с вот этим элементом формы: <select name="surname"> <?=selectItems($names, $_REQUEST['surname'])?> </select><br>
-
Да, можно так: $st = "Том и Джери - весёлый мультфильм и очень интересный!"; $st = str_replace('весёлый мультфильм и', '', $st); echo $st; Сажите ,а как моим кодом сделать такое же без str_replace?
-
<html><body> <?php $st = "Том и Джери - весёлый мультфильм и очень интересный!"; $person = explode("веселый мультфильм и",$st,6); list($p) = $person; echo $p; ?> </body></html> Как вырезать строку "веселый мультфильм и" и вывести Том и Джери - очень интересный?
-
То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" —-> $REQUEST['vasya']['Pypkin']?
-
Я хотел спросить как попадают элементы массива known в МАССИВ РИКВЭСТ в этом коде?
-
А попадает в РИКВЭСТ с массива known от инпутов за каждой итерацией вытягиваются значения с отправленной формы в массив РИКВЭСТ?
-
А массив known создается каким образом? За каждой итерацией вытягивается с формы и передается в качестве элемента массиву Request?
-
То есть там может быть сколько угодно параметров в $_REQUEST? Скажите <input type="hidden" name="known[PHP]" value="0"> Куда попадает вот это known ?
-
В документации написано: REQUEST - это ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.REQUEST - я так понимаю это массив глобальный в котором внутри 3 массива вложенные? В строке <input type="submit" name="doGo" value="Go"> поле name=doGO. Это значение отправляется в глобальный массив REQUEST, а как же если согласно документации в глобальном ассоциативном массиве REQUEST 3 параметра?
-
Расшифруйте логику работы что куда берется и получается в этом цикле. Смущают вот эти названия в параметрах как ими манипуляция происходит ['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>
-
Все , запустил программу на С++ в пхп, оказывается нужно было переименовать в расширение cgi расширение exeи кинуть в папку cgi апача программу, а не в cgi возле папки сайта или в папкe www-сайта. Скажите, а для каких возможностях используются cgi, какие проги пишутся примерно чтоб использовать cgi для пхп?
-
Изучаю пхп, там пишут что так не используют, но это важно знать как подключается cgi в пхп. Вот написал код. #include <iostream> #include <stdlib.h> using namespace std; void main(){ char *RemoteAddr = getenv("REMOTE_ADDR"); char *QueryString = getenv("QUARY_STRING"); cout<<"Content-type: text/html"<<endl<<endl; cout<<"<html><body>"; cout<<"<h>Здравствуйте! Мы знаем о Вас все!</h1>"; printf("Ваш IP-адрес: %s<br>",RemoteAddr); printf("Вот параметры, которые вы указали: %s", QueryString); cout<<"</body></html>"; cin.get(); } Скомпилировал программу, получил файл 1.exe, кинул этот файл возле файла index.php Далее там пишут вот такое, что пишут, на фото вложил. В файле index.php ничего не писал, там просто <?php echo 'Привет мир!'; ?> Не могу понять, что в браузере ввести чтоб вызвать методом GET эту программу написанную на С++. Когда ввожу так: http://test.ru/1.exe?a=1&b=2 происходит просто скачка файла 1.exe на компьютер, но не запуск cgi-программы(я так понял это называется любая программа написанная на ином языке, которую мы хотим запустить в браузере,верно?). Подскажите, как запустить программу 1.exe? Апач находится у меня на диске С:\www Я зашел в C:\www\conf в файл httpd.conf Ввел там такое: AddHandler cgi-script .cgi .pl .bat .exe AddType cgi-script .exe Затем зашел в C:\www\conf нашел файл просто httpd(текстовой) нашел там <Directory "C:/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> и ввел ниже этого: <Directory "C:/www/htdocs/test.ru/www"> #тут могут быть и другие настройки типа AllowOverride или Allow Options ExecCGI </Directory> Ввожу такую ссылку: http://test.ru/1.exe?a=1&b=2 Опять скачивается файл 1.exe но не запускается Переименовал файл 1.exe на 1.cgi и запустил http://test.ru/cgi-bin/1.cgi?a=1&b=2 Выдает ошибку: Not Found The requested URL /cgi-bin/1.cgi was not found on this server.