Урок № 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'ом - не используя третьей переменной:
1. valenok - 16 Января, 2009 - 19:31:46 - перейти к сообщению
Предлагается читателям самим понять, почему код сработает и даст тот же результат.
10.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- // Создайте одномерный числовой пустой массив с одним элементом.
- // Добавьте туда еще один элемент.
- $a[] = 'elem2'; // $a[1] = elem2
- // Добавьте туда третий элемент представляющий из себя ассоциативный массив с одним элементом.
- // Добавьте в этот ассоц. массив еще один элемент.
- $a[2]['integer'] = 45; // $a[2] = Array( 'key' => 'val' , 'intege' => 45 );
- // Замените первый элемент в родительском массиве на второй элемент из ассоц. массива.
- $a[0] = $a[2]['integer'];
11. Создать переменную типа Resource просто так не получится. Переменная этого типа представляет из себя указатель на другой внешний ресурс и нам пока неизвестно с каким ресурсом и какой памятью работать. Тип данных Ресурс существует, но о нём полностью заботится php .