Возвращаемые функциями значения Учебник PHP

Локальные сети
Архитектура компьютерной сети
Сетевые операционные системы
Технология WI-FI
Угрозы и риски безопасности
беспроводных сетей
Математика
Контрольная по математике
Интегральное исчисление
Элементы теории множеств
Математический анализ
Применение производных
в исследовании функций
Аппарат дифференциальных
уравнений в экономике
Элементы линейного программирования
Динамическое программирование
Дифференциальное исчисление функций
Графические пакеты
Компьютерный монтаж
Учебник Autodesk
Mechanical Desktop
Автоматизация проектирования
Проектирование печатных плат
Вспомогательные программы
Моделирование схем
Редактирование принципиальных схем
Создание проекта в OrCAD
Учебник OrCAD
Редактирование текста
Графический редактор
Corel DRAW
Проектирование многослойных
печатных плат P-CAD
Физика решение задач
Методика решений задач по кинематике
Механика жидкостей и газов
Законы постоянного тока Колебания и волны. Переменный ток
Динамика и законы сохранения в механике
Магнитное поле, электромагнитное взаимодействие
Электростатика
Основы специальной теории относительности
Оптическая физика
Квантовая статистика
Магнитные свойства атомов
Зонная теория твердых тел
Курс лекций по атомной физике
Методика решения задач по Электростатике
История искусства;
Собор Нотр-Дам
Иллюстрированные рукописные книги
Техника темперной и масляной живописи
Иллюстрированный самоучитель
по Macromedia Flash
Учебник по схемотехнике,
Учебник PHP
Работа со строками
Создание расширений
Работа с переменными
Определение количества
аргументов
Доступ к аргументам
Установка на системах Windows
Область видимости переменной
Куки HTTP
Освобождение ресурсов
PHP-скрипты
Установка на системы UNIX
Возвращаемые функциями
значения
Замена переменных в строках
Безопасный режим
Использование функций
FAQ
Система автоматического
построения
 

Массив может и не может

Почему $foo[bar] неправильно?

Вы всегда должны использовать кавычки вокруг индекса ассоциативного массива. Например, пишите $foo['bar'], а не $foo[bar]. Но почему не верна запись $foo[bar]? Вы могли встретить в старых скриптах такой синтаксис:

$foo[bar] = 'enemy'; echo $foo[bar]; // etc

Программное обеспечение ЭВМ разделяют на общее, или системное

Это неправильно, но работает. Тогда почему неправильно? Суть в том, что этот код содержит неопределённую константу (bar), а не строку 'bar' (обратите внимание на кавычки), и PHP может в дальнейшем определить константу, которая, к несчастью для вашего кода, имеет то же самое имя. Это работает, поскольку неопределённая константа конвертируется в строку с тем же именем. Испанская архитектура

Как указано в разделе синтаксис, между квадратными скобками ('[' и ']') должно иметься выражение. Это означает, что вы можете записать:

echo $arr[ foo(true) ];

Это пример использования return-значения функции в качестве индекса массива. PHP знает также и о константах, и вы можете увидеть спереди E_*. Искусство Тибета — страны в Центральной Азии, расположенной на Тибетском нагорье, — тесно связано с буддизмом. Буддизм распространился в Тибете в VII столетии, но наибольшее влияние приобрёл с XV—XVI вв. Светским и духовным правителем страны стал далай-лама («океан премудрости»). В Тибете в то время были возведены многочисленные монастыри. Анализ видов и кинетических параметров движений Равномерное движение Поступательным называют такое движение твердого тела, при котором всякая прямая линия на теле при движении остается параллельной своему начальному положению

$error_descriptions[E_ERROR] = "A fatal error has occured"; $error_descriptions[E_WARNING] 
= "PHP issued a warning"; $error_descriptions[E_NOTICE] = "This is just an informal 
notice";

Обратите внимание, что E_ERROR это такой же идентификатор, как и bar в первом примере. Но последний пример равносилен записи:

$error_descriptions[1] = "A fatal error has occured"; $error_descriptions[2] 
= "PHP issued a warning"; $error_descriptions[8] = "This is just an informal notice";

поскольку E_ERROR равна 1, etc.

Тогда как может работать $foo[bar]? Это работает, поскольку bar, по причине своего синтаксиса, ожидается как константное выражение. Однако в этом случае константа с именем bar не существует. PHP теперь принимает, что вы обозначили bar литерально как строку "bar", но что вы забыли указать кавычки.

Возвращаемые функциями значения TRUE/FALSE

Большая часть внутренних функций переписаны таким образом, чтобы возвращать TRUE при успехе и FALSE при неудаче, в отличие от 0 и -1 в PHP/FI 2.0, соответственно.
Это новое поведение даёт более логичный код вроде $fp = fopen("/your/file") or fail("darn!");. Поскольку в PHP/FI 2.0 не было чётких правил относительно того, что функции должны возвращать при неудаче, большая часть таких скриптов, должна, вероятно, быть проверена вручную после использования конвертера из 2.0 в 3.0.

Пример C-9. Миграция из 2.0: return-значения, старый код
$fp = fopen($file, "r"); if ($fp == -1); echo("Could not open $file 
for reading<br>\n"); endif;
Пример C-10. Миграция из 2.0: return-значения, новый код
$fp = @fopen($file, "r") or print("Could not open $file for reading<br>\n");

Числа с плавающей точкой

Числа с плавающей точкой ("float", "double" или "real") могут специфицироваться с использованием следующих видов синтаксиса:

$a = 1.234; $a = 1.2e3; $a = 7E-10;

Размер float зависит от платформы, хотя максимально возможна величина ~1.8e308 с точностью, грубо, 14 десятичных цифр (то есть 64 битный IEEE-формат).

Точность "с плавающей точкой"

Весьма часто простые дроби вроде 0.1 или 0.7 не могут конвертироваться в их внутренние двоичные представления без потери точности. Это может привести к парадоксальным результатам: например, floor((0.1+0.7)*10) обычно возвращает 7 вместо ожидаемого 8 как результат внутреннего представления приблизительного числа 7.9999999999....

Причиной является то, что невозможно точно выразить некоторые дроби в десятичной нотации конечным количеством цифр. Например, 1/3 в десятичной форме имеет вид 0.3333333...

Итак, никогда не полагайтесь на точность результата с плавающей точкой до последней цифры и никогда не проверяйте равенство чисел с плавающей точкой. Если вам нужна действительно высокая точность вычислений, вы должны использовать math-функции произвольной точности или gmp.

Целые числа

integer это число из набора Z = {..., -2, -1, 0, 1, 2, ...}

Синтаксис

Целые числа могут специфицироваться в десятеричной (база 10), 16-ричной (база 16) или 8-ричной (база 8) нотации с необязательным знаком (- или +).

Если вы используете 8-ричную нотацию, первым символом числа должен быть 0 (нуль), для 16-ричной нотации первыми символами числа будут 0x.
Пример 6-1. Целочисленные литералы
$a = 1234; # 10-ричное число $a = -123; # отрицательное число $a 
= 0123; # 8-ричное число (экивалентно 10-ричному 83) $a = 0x1A; # шестнадцатеричное 
число (экивалентно 10-ричному 26)

Размер integer зависит от платформы, хотя максимальное значение около 2 миллионов является обычным (то есть 32-битное знаковое). PHP не поддерживает беззнаковые integer.

Переполнение

Если вы специфицируете число за рамками диапазона типа integer, оно будет интерпретировано как float. Также, если вы выполняете операцию, которая даёт в результате число за пределами диапазона типа integer, будет возвращено float.

$large_number = 2147483647; var_dump($large_number); // на выходе: 
int(2147483647) $large_number = 2147483648; var_dump($large_number); // на выходе: 
float(2147483648) // это подходит также для специфицированных 16-ричных чисел: 
var_dump( 0x80000000 ); // на выходе: float(2147483648) $million = 1000000; $large_number 
= 50000 * $million; var_dump($large_number); // на выходе: float(50000000000)

Математика решение задач