Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ответы на вопросы из уроков по php
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Урок № 1. Переменные
Вопросы и задания на усвоение материала:
1. $a = '22'; Какого типа является сейчас переменная $a ?
2. $b = $a = 7; чему равно $b ? не забудьте что читается в лева на право.
3. $a = '46'; $b = '32'; Что больше, а или б ?
4. Какой тип переменной лучше всего подойдёт для хранения результата деления 2 на 4?
5. $a = 5; $b=2.5; Какого типа данных будет результат деления А на Б ?
6. Попробуйте присвоить переменной значение +214748364900000000000000.
7. Выясните сколько это 2B в шестнадцатеричной системе ? ( Присвойте переменной значение и выведите )
7. Можно ли переменной присвоить переменную ? Если да - покажите как. Если нет, объясните почему нет.
9. $a='Вася'; $b = 'Петя'; Поменяйте местами значения переменных .
10. Создайте одномерный числовой массив с одним элементом.
Добавьте туда еще один элемент.
Добавьте туда третий элемент представляющий из себя ассоциативный массив с одним элементом.
Добавьте в этот ассоц. массив еще один элемент.
Замените первый элемент в родительском массиве на второй элемент из ассоц. массива.
11. Создайте переменную типа Resource
Ответы и решения
1. $a = '22'; Переменная является строкой, о чём свидетельствуют кавычки.
2. $b = $a = 7; - $b = 7; Несмотря на то, что читается с лева на право, интерпретатор присваивает переменной b то выражение которое находится с права от знака равно, и именно поэтому оно сначала проверят выражение справа. А потом подставляет $b = $a , где $a в свою очередь уже равен семи.
3. $a = '46'; $b = '32'; переменные а и б являются строками и сравнить их не получится.
С таким же успехом вы могли бы сравнивать $a='автобус'; и $b='троллейбус';
Замечание: Сравнить "автобус" и "троллейбус" можно, к строкам применимо сравнение. Только сравнится оно с учетом типа данных, то есть, в случае со строками, в порядке следования символов в таблице ASCII.
4. результатом деления 2 на 4 будет половина - дробь. А значит тип будет float
5. результатом деления 5 на 2,5 будет float. Несмотря на то, что результат деления будет целым числом - в делении участвует дробь по этому результатом деления будет нечто вроде 2/1 (дробь две первых).
6. При присвоении -214748364900000000000000 переменной, переменная принимает тип float так как его точность и диапазон больше и на экране вы увидите 2.147483649E+23
7. <?php $a = 0x2B; echo $a; ?> вывело 43. Заметьте что формат числа в шестнадцатеричной системе 0x__
8. Можно. Как в вопросе 2 или <?php $a = 1; $b = $a; echo $b; ?> выведет 1
9. <?php $a='Вася'; $b = 'Петя'; $c = $a; $a = $b; $b = $c; ?> Теперь $a='Петя'; $b = 'Вася';
Альтернативное решение предложенное Eugen'ом - не используя третьей переменной:
// Замените первый элемент в родительском массиве на второй элемент из ассоц. массива.
$a[0]=$a[2]['integer'];
11. Создать переменную типа Resource просто так не получится. Переменная этого типа представляет из себя указатель на другой внешний ресурс и нам пока неизвестно с каким ресурсом и какой памятью работать. Тип данных Ресурс существует, но о нём полностью заботится php .
----- Truly yours, Sasha.
EuGen
Отправлено: 16 Января, 2009 - 22:34:29
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Урок № 2 - Немного управления.
Здесь я привожу ответы на вопросы. Надеюсь, сначала вы попробовали ответить на них самостоятельно.
0. Никогда не обязательно. else - часть, которая выполняется в случае ложности условия в if, либо если пройдены все ветки elseif и все условия там тоже были ложны. Но часть else никогда не является обязательной для определения.
1. case 2. Мы попадем в часть else, так как 5%5 равно 0, и, значит, ложно. Далее, 5>0, то есть выполнится код, стоящий после ":".
2.
3. Код не выполнится до конца никогда, так как условие в while будет всегда истинно. Связано это с тем, что внутри тела цикла никак не меняется переменная, которая проверяется в условии цикла. И, значит, цикл будет повторяться бесконечное число раз, так как изначально его условие истинно.
4. break(3)
5. Необходимость в break есть тогда, когда нужно, чтобы выполнялся код только для одного case - для того, который соответствует значению выражения switch. Напомню, что если нет break, то выполнится не только этот case, но и все нижестоящие.
6.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Champion
Отправлено: 17 Января, 2009 - 10:58:55
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
УРОК № 3. Знакомство с функциями.
1. В каком варианте (вариантах) функция объявлена синтаксически не верно? Почему?
-a- function my_func() {} - верно, всё без подвоха
-b- function _qwerty($a) {} - тоже верно
-c- function 4func($a = 4) {} - начинается с цифры, а это неправильно
-d- function func($a = 4) {} - верно
-e- function func.my($a) {} - имя функции содержит точку - неправильно
-f- function func-my($a = 4) {} - имя функции содержит минус (или тире - не важно) - неправильно
-g- function int($a = 4) {} - int - зарезервированное слово, тем не менее, такое объявление функции синтаксически верно и она будет работать
-h- function return($a = 4) {} - return также зарезервированное слово, но это оператор. Поэтому так объявлять функцию нельзя.
2. В каком варианте функция function func($a, $b = 4, &$c, $d = 5, $e = 6) вызвана неправильно? Почему? (все переменные имеют значение, функция возвращает значение)
-a- call func(1, 3, $d) - неправильно
-b- $d = func(1, 3, 5) - неправильно, потому, что третий параметр должен передаваться по ссылке, т.е. это должна быть переменная, а не константа.
-c- $d = func(1, 3, $f, 6) - верно
-d- echo func($s) - неправильно. Не все остальные параметры имеют значение по умолчанию.
-e- func(1, func(1, 3, $d), $d) - правильно.
-f- func(1, $d, func(1, 3, $d)) - неправильно по той же причине, что и в пункте b. По ссылке передаваться должна переменная
Dastar
Отправлено: 23 Января, 2009 - 00:47:40
Частый гость
Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008 Откуда: Израиль
Помог: -6 раз(а)
Урок 0. "Уххты! А что это?" - ответы
1. Фразу "Hello World" нужно заключить в кавычки (одинарные ['] или двойные ["])
3. Перед коменнарием дожны стоять две косые черты (//)
----- Не знаешь - молчи.
valenok
Отправлено: 26 Января, 2009 - 20:38:49
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Урок № 16. Работа с изображениями
Вопросы и задания на усвоение материала:
1. Наложение печати
Уверен дописать на картинке пару слов у тебя труда не составит. ПОэтому попробуем пририсовать графическую подпись. Открываем пэинт и делаем свой автограф. Получилось? Отлично.
Теперь сохраняем из гугла две фотки Памеллы Андерсон и пририсовываем к ним свою подпись.
( Подсказка: наверное полезно знать что у изображения есть такой параметр как Альфа - обозначающее прозрачность. Уверен Ctrl F по списку функций что нибудь бросит вам в глаза, хотя это вовсе не обязательно.)
2. Captcha
Сложную мы делать не будем, сделаем простую. Каждый раз выводится случайные 4 цифры.
В чём прикол? Для этого будем использоваться особый шрифт
А еще после того как наше изображение будет белого цвета с чёрным текстом , мы применим к нему фильтр негатива и на экране сделаем так чтобы оно отображалось наоборот, с чёрным фоном и белым цветом и оба изображение выводились на экран.(И всё в одном скрипте)
3. логотип php
Это заданее попроще и подлинее - нарисуйте логотип php
Создаём рисунок
закрашиваем в белый
рисуем овал
рисуем на нём текст белого цвета большого размера
в том же месте со смещением на пиксель ниже и правее рисуем тот же текст двумя размерами меньше, чёрным
Дорисовываем пару серых дуг слева вверху от овала
и парочку тёмно фиолетовых справа.
( Можно было сначала нарисовать тёмно фиолетовый овал, а на нём светлый, чтоб его закрыл
и оставил лишь немного срава, вместо рисования дуги.)
----- Truly yours, Sasha.
EuGen
Отправлено: 05 Мая, 2009 - 12:20:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Урок № 5. Математические функции
0. Вернет true, если принять, что такие числа допустимы. Если читатель знает предмет вопроса (или не поленился заглянуть в википедию), то он знает, что трансцедентные числа - обычные вещественные числа. Но являются они корнями многочлена с иррациональными коэффициентами. Единственное что - их представление в типе float языка php сделает их уже не трансцентными вовсе. Так что - с точки зрения float функция is_nan вернет true. Если же считать, что трансцедентные числа нельзя записать представлением float, то и вообще ничего не вернет (агрумента то и не будет)
1.
выводит число 65? Разве строки могут додаваться?
Вопрос: $a = '22'; переменная точно строка?
Мелкий
Отправлено: 26 Ноября, 2010 - 16:50:23
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 617 раз(а)
nichtraucher пишет:
выводит число 65?
+ - математический оператор. Поэтому PHP выполняет приведение типов к числу. Вот на JS вы бы получили строку 2243, т.к. там конкатенация строк плюсом работает.
----- PostgreSQL DBA
ALEN
Отправлено: 03 Декабря, 2010 - 13:24:05
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
nichtraucher
в php при математических выражениях , интерпретатор сам пытается перевести строку в число - поэтому результат правильный.
Dmitrij
Отправлено: 29 Ноября, 2011 - 16:59:43
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2011 Откуда: Запорожье, Украина
Помог: 0 раз(а)
В задании номер 6 второго урока в цикле foreach перед $rgResult[$value]=$key; необходимо
написать unset($rgResult[$key]); Иначе в массив просто добавится еще 3 элемента.
vbnm
Отправлено: 19 Января, 2012 - 21:35:23
Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
ALEN пишет:
nichtraucher
в php при математических выражениях , интерпретатор сам пытается перевести строку в число
операторы "<",">" так же приводят к такому поведению?
//скрипт распознает числовые и строковые значения переменной на oснове Функции PHP "is_numeric" , операторов ветвления "if,else" и переключателя "switch"
//причем, если это значение числовое, то он сравнивает его по условию с числом "4"
$a="vbnm";//подставляем любое значение вместо "vbnm"
if(is_numeric($a))// если "$а" является числом, то дальше выполняется //функция сравнения его с числом "4" с последующим выводом результата в браузере
switch($a){
case"4":
echo$a.'-четыре';
break;
case($a<4):
echo'$a .'-меньше 4';
break;
case($a>4):
echo '$a.'-больше 4';
break;
}
elseecho($a."-".'Это строка!');//иначе в браузере выводится сообщение, что "$a" является строкой
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.