PHP-4 Эффективная работа


Общие правила построения программы
Типы данных
Выражения
Функции

3.2. Типы данных

На данный момент PHP-машина поддерживает восемь элементарных типов данных.

1. Четыре скалярных типа:
       - логические значения;
       - целые числа;
       - вещественные числа в формате с плавающей запятой;
       - строки.
2. Два сложных типа:
       - массивы;
       - объекты.
3. Два специальных типа:
       - ресурсы;
       - null.

В отличие от типизированных языков, таких как Си или Паскаль, в РНР тип переменной не задается программистом. Как правило, PHP-машина относит переменную к тому или иному типу во время выполнения программы. Конкретный тип переменной определяется вычислительным контекстом (в этом отношении РНР очень похож на Perl).

совет
       Если вам все-таки необходимо преобразовать переменную таким образом, чтобы она получила необходимый вам тип, вы можете использовать функцию settype( ) либо вос- пользоваться механизмом приведения типа, описываемого в разделе 3.2.10.

В результате одни и те же переменные в зависимости от ситуации могут вести себя по-разному — в соответствии с их текущим типом. Подробнее этот вопрос рассматривается в раздел 3.2.9.

3.2.1. Логические переменные

Это, пожалуй, самый простой тип. Логическая переменная обозначает, истинно или ложно некоторое высказывание (выражение). Поэтому она может принимать только два значения: true (истина) или false (ложь).

3.2.1.1. Синтаксис

Задание литерала логической переменной или константы осуществляется с помощью ключевых слов TRUE и FALSE. Регистр используемых символов роли не играет. $foo = True; // присваивает переменной $foo значение TRUE Довольно часто логические значения используются как результат вычисления некоторых операторов, передаваемый затем в управляющие структуры:

if (Saction == "show_version")
          // == представляет собой оператор, возвращающий
          // логическое значение
{
          echo "Текущая версия программы - 1.23R";
}
// А это несколько избыточная конструкция:
if ($show_separators == true)
{
          echo <"hr>\n";
}

// поскольку, как и в Си, можно записать:
if ($show_separators)
{
          echo "<hr>\n";
}

3.2.1.2. Приведение значений к логическому типу

Чтобы явным образом привести значение некоторой переменной к логическому значению, вы можете использовать идентификатор типа (bool) или (boolean). Однако в большинстве случаев делать этого не нужно, поскольку значение конвертируется автоматически, если оператор, функция или управляющая структура требуют использования аргумента логического типа. (См. также раздел 3.2.9.)

При приведении к логическому типу перечисленные ниже значения будут интерпретированы как «ложь» (FALSE):

  • логическая константа FALSE;
  • целочисленный нуль — 0;
  • вещественный нуль — 0,0;
  • пустая строка «», а также строка «О»;
  • массив без элементов;
  • объект без элементов;
  • специальное значение NULL.

Все прочие значения при приведении к логическому типу интерпретируются как TRUE.

3.2.2. Целые числа

Целочисленные переменные в РНР принимают значения из множества Z = ..., -2,-1,0,1,2,...

3.2.2.1. Синтаксис

Целые числа могут задаваться в десятичной, шестнадцатеричнои и восьмеричной системах счисления. Знак числа указывается символом + для положительных1 и символом - для отрицательных чисел. Если вы используете восьмеричное представление, вы должны начать число с символа 0 (нуля), а при использовании шестнадцатеричнои записи начать число с префикса 0х.

Вот несколько примеров записи целых чисел:

$а = 1234;        # привычный формат представления числа
$а = -123;        # отрицательное число
$а = 0123;        # восьмеричное число (соответствует десятичному 83)
$а = 0xlA;        # шестнадцатеричное число
                       # (соответствует десятичному 26)

Максимальное значение целого числа, поддерживаемого PHP-машиной, зависит от особенностей платформы, но на сегодняшний день наиболее часто используется 232-1.

3.2.2.2. Целочисленное переполнение

Если вы попытаетесь ввести число, находящееся за пределами целочисленного типа, оно автоматически будет преобразовано в вещественное число. Например:

$large_number = 2147483647;
var_dump($large_number);        // результат: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);        // результат: float(2147483648)

Кроме того, если некоторая функция или оператор приводят к получению результата, выходящего за пределы, поддерживаемые целочисленным типом, этот результат автоматически преобразуется в вещественное число:

Smillion = 1000000;
$large_number = 50000 * Smillion;
var_dump($large_number);        // результат: float(50000000000)

3.2.2.3. Приведение к целочисленному типу

Для того чтобы явно привести значение переменной к целочисленному типу, вы можете использовать идентификатор типа (int) или (integer). Однако в большинстве случаев делать этого не нужно, поскольку приведение осуществляется автоматически по мере необходимости. (См. также раздел 3.2.9.)

Приведение к целочисленному типу осуществляется в зависимости от типа исходного значения.

  • Логическое значение FALSE преобразуется в 0 (нуль), a TRUE — в 1.
  • Число округляется по направлению к нулю (возможно, кто-то помнит еще из школьного курса, что получаемое число называется ближайшим меньшим целым).
  • Если же исходное вещественное число находится за пределами границ, используемых целыми числами (в настоящее время это, как правило, 231), результатоперации не определен.

внимание
       В этом случае вы не получите никакого предупреждения от РНР-машины.

Постарайтесь воздержаться от попыток приведения результатов вычисления с вещественными числами к целочисленному типу. В ряде случаев вы можете получить совершенно непредсказуемые результаты. Например, в результате вычислений: echo (int) ( (0.1+0.7) * 10 ); вы получите число 7!

Результаты приведения к целочисленному типу переменных других типов не определены. В настоящее время используется правило, в соответствии с которым переменная сначала приводится к логическому типу, а уже затем осуществляется приведение этого логического значения к целому числу.

примечание
       Это правило сегодня работоспособно, но в будущих версиях могут быть введены другие соглашения, поэтому строить на нем свою программу не стоит!

3.2.3. Вещественные числа

Вещественные числа, они же «числа с плавающей запятой» могут вводиться с помощью всех стандартных нотаций, принятых в Си или Perl:

$а = 1.234; $а = 1.2еЗ; $а = 7Е-10;

Максимальный размер вещественного числа, так же как и в случае с целыми числами, зависит от платформы, но, как правило, используется 64-битный формат IEEE2, что означает 14 десятичных чисел в числе, откуда следует максимальное значение в 1,8-10308.

Довольно часто случается так, что весьма простые десятичные дроби, такие как 0,1 или 0,7, не могут быть преобразованы во внутреннее двоичное представление без некоторой потери точности. Это довольно часто приводит к неожиданным на первый взгляд результатам. Например, вызов floor ((0.1+0.7) *10) обычно возвращает не 8, как вы ожидаете, а 7, поскольку внутреннее представление вещественного результата операции равно 7,9999999999...

внимание
       Вывод прост: следует не доверять последнему десятичному разряду вещественных чи- сел, а также проверять на равенство два вещественных числа.

3.2.4. Строки

В РНР строки представляют собой последовательность алфавитно-цифровых символов, которые окружены одним из двух наборов ограничителей.

Если строка заключена в двойные кавычки ", производится расширение переменных, имена которых включены в состав строки. Кроме того, в этом режиме поддерживаются следующие ESC-коды, активизируемые символом «\»:

ESC-код Назначение
\n
Новая строка (LF или ОхОА (10) в ASCII)
\r
Возврат каретки (CR или 0x0D(13) в ASCII)
\t
Табулятор (НТ или 0x09 (9) в ASCII)
\ \
Обратная косая
\ $
Знак доллара
\ "
Двойная кавычка
\ [0-7] {1,3}
Последовательность символов, совпадающих с регулярным выражением, представляющим собой число в восьмеричной записи
\x[0-9A-Fa-f]{l1,2}
Последовательность символов, совпадающих с регулярным выражением, представляющим собой число в шестнадцатеричной записи. Если же вы попытаетесь «закрыть» обратной косой чертой любой другой символ, в выходной поток будут помещены как этот символ, так и обратная косая, причем в РНР 4 вы не получите никакого предупреждения на этот счет

Второй ограничитель строки — это одиночные кавычки « ' ». При его использовании единственные Esc-коды, которые будут интерпретироваться PHP-машиной, — это «\\» и «\ ' ». Расширение переменных в таких строках, как и в Perl, не происходит.

Существует еще один способ формирования строк, заимствованный, по большому счету, из Perl. Вы можете использовать последовательность «<<<», за которой следует дополнительный идентификатор. Такой же идентификатор должен содержаться в строке программы, которая завершает текстовый фрагмент.

Отметим, что при этом завершающий идентификатор должен начинаться с первой позиции строки и должен соответствовать тем же соглашениям об именах переменных, что и любые другие объекты РНР, то есть содержать только алфавитно-цифровые символы и начинаться с буквы или символа подчеркивания.

Такие строки эквивалентны обычным строкам в двойных кавычках с тем отличием, что они не предполагают специальной интерпретации символа двойных кавычек. Вот несколько примеров таких строк:

<?php
$str = << Вот пример многострочной строки,
использующей механизм, заимствованный, с некоторыми
вариациями, из Perl.
EOD;

/* Пример посложнее, с переменными. */
class foo {
          var $foo;
          var $bar;

          function foo() {
               $this->foo = 'Foo' ;
               $this->bar = array ('Bar1 , 'Bar2', 'ВагЗ');
          }
}
$foo = new foo( ) ;
$name = 'Вольдемар' ;
echo «

Меня зовут "$name". Я печатаю какое-то $foo->foo. <р>
А теперь я напечатаю {$foo->bar[1]}.<р>
Теперь я выведу латинскую букву 'А' : \х41
EOT;
?>

Для слияния (объединения) строк, как и в Perl, используется оператор «.». Использование оператора сложения «+» для этой цели не разрешено. Доступ к отдельным символам строки осуществляется, как в Паскале и Си, за счет интерпретации строки как массива отдельных символов. Вот несколько примеров, иллюстрирующих эти идеи:

<?php
/* Присвоение переменной строкового значения. */
$str = "Это простая строка";

/* и дописывание ей значения. */
$str = $str . " в которую добавлен текст";

/* Еще один вариант конкатенации в стиле Perl */
$str .= " а затем приписан символ конца строки\n";

/* Эта строковая переменная получит вид '<р>Дом номер 13</р>' */
$num = 13;
Sstr = "<р>Дом номер $num</p>";

/* А эта - '<р>Дом номер $num</p>' */
$num = 13;

$str = '<р>Дом номер $num</p>';
/* Извлекаем первый символ строки */
Jstr = 'Строка для анализа.';
{first = $str[0] ;

/* А можно извлечь и последний... */
$last = $str[strlen($str)-l] ;

3.2.4.1. Анализ содержимого строки

В тех случаях, когда строка задается с использованием двойных кавычек, РНР-машина осуществляет подстановку переменных, имена которых упомянуты внутри строки. При этом предусмотрено использование двух типов синтаксисов: простого и сложного. Простой синтаксис используется чаще всего в силу, как вы понимаете, его простоты и удобства. Он позволяет легко представить переменную, массив или свойство экземпляра класса. Это традиционное представление, используемое с ранних версий РНР. А вот новый, сложный синтаксис введен в обиход с версии РНР 4 и отличается фигурными скобками, окружающими интерпретируемое выражение.

3.2.4.2. Простой синтаксис

Если анализатор PHP-машины встречает в ходе разбора строки символ $, не закрытый обратной косой, предпринимается попытка интерпретировать последующие символы как имя переменной. В тех случаях, когда за именем переменной сразу же следует какой-либо символ, то во избежание ошибки вы должны заключить имя переменной в фигурные скобки.

Конечно, это имеет смысл только для текстов, представляемых латиницей, поскольку символ кириллицы сразу же указывает на конец имени переменной, так же как запятая, пробел или апостроф. Вот несколько примеров:

$bееr = 'Миллер';
          echo "Пробка от $beera скручивается руками";
          // Работает, поскольку русское "а" не может использоваться в
          // имени переменной
          echo "He drunk some $beers";
          // Не работатет, так как 's' может использоваться в имени
          // переменных
          echo "He drunk some ${beer}s"; // А вот так - правильно

Аналогичным образом вы можете включать в тело строки элементы массивов и свойства объектов. В случае с индексами массивов конец имени переменной обозначается закрывающей квадратной скобкой ], а к свойствам объектов применяются те же правила, что и к обычным переменным. Но в последнем случае вы не можете использовать трюк с фигурной скобкой:

$fruits = array( 'клубника' => 'красная' , 'груша' => 'желтая' );
echo "Спелая клубника обычно $f ruits[клубника] .";
echo "Площадь имеет длину $square->width метров.";
echo "А в сантиметрах это составит $square->width00 см.";
// вот это не сработает...
// Вам придется использовать новый, сложный синтаксис.

3.2.4.3. Сложный синтаксис

Собственно говоря, название синтаксиса происходит не от его собственной сложности, а от возможности оперировать со сложными выражениями. Этот синтаксис позволяет вам включить в строку любую переменную, которая может быть представлена в PHP-машине. Вы просто записываете выражение так же, как и за пределами строки, а затем включаете его в строку внутри пары фигурных скобок — {и}. Но поскольку вы не можете использовать «{» как Esc-код, если за открывающей фигурной скобкой следует идентификатор переменной, начинающийся с $, РНР-машина автоматически воспринимает это как начало имени переменной, заканчивающееся закрывающей фигурной скобкой. В остальных случаях фигурные скобки выводятся без специальной интерпретации. А если вы хотите вывести «{$», то необходимо использовать последовательность «{\$». Вот несколько примеров:

$great = 'здорово';
echo "Это просто { $great}";
// Не сработает. Вы получите - Это просто { здорово}
echo "Это просто {$great}";
// Правильно. Вы получите Это просто здорово
echo "Эта плошадь длиной {$square->width}00 сантиметров.";
echo "Это правильно: {$arr[4][3]}";
echo "А это неверно: {$arr[foo][3]}";
// по той же причине, что и использование
// $foo[bar] за пределами строки.

echo "Это нужно делать вот так: {$arr['foo'][3]}";
echo "Или даже вот так: {$obj->values[3]->name}";
echo "Это значение переменной с именем $name: ${{$name}}";

3.2.4.4. Преобразование строк

Преобразование строки в числовое значение осуществляется в соответствии со следующим правилами.

Строка преобразуется в вещественное число, если содержит хотя бы один из символов: «.», «е», или «Е». Если же ни одного из этих символов нет, предпринимается попытка интерпретировать строку как целое число.

Для формирования числа используется начальный фрагмент строки. Если строка начинается с последовательности, интерпретируемой как число, то результатом обработки станет это число. В противном случае значение числа становится равным 0.

В тех случаях, когда первое выражение представляет собой строку, тип получаемой переменной определяется вторым выражением:

$foo = 1 + "10.5";                // $foo - вещественное (11.5)
$foo = 1 + "-1.3еЗ";                // $foo - вещественное (-1299)
$foo = 1 + "bob-1.3e3";                // $foo - целое (1)
$foo = 1 + "ЬоЬЗ";                // $foo - целое (1)
$foo = 1 + "10 Small Pigs";                // $foo - целое (11)
$foo = 1 + "10 Little Piggies";                // $foo - целое (11)
$foo = "10.0 pigs " + 1;                // $foo - целое (11)
$foo = "10.0 pigs " + 1.0;                // $foo - вещественное (11)

3.2.5. Массивы

Вообще говоря, массивы в РНР представляют собой упорядоченные хэш-массивы. В РНР этот механизм оптимизирован таким образом, что вы можете использовать его как обычный массив, список, хэш-массив, словарь, коллекцию, стек, очередь и т. д. А поскольку значением элемента массива тоже может быть массив, вы можете использовать эти структуры данных для построения многомерных массивов или деревьев.

3.2.5.1. Создание массива с помощью аrrау()

Для создания массива используется функция аrray ( ). Ее аргументами является последовательность пар «ключ-значение», разделенных запятыми. Ключ может представлять собой неотрицательное целое число или строку. Если ключ является строкой, которая может интерпретироваться как целое число, ключ будет преобразован в целое число.

примечание
       Здесь есть одна тонкость. Ключ 8 будет интерпретирован как число, а вот ключ 08 будет рассматриваться как строка «08»!

Значением элемента массива может быть произвольный объект РНР. Если вы при создании нового элемента массива не укажете ключ, РНР-машина автоматически инкрементирует максимальное значение уже использованного целочисленного индекса. Если же к этому моменту не определено ни одного целочисленного индекса, ключ получит значение, равное 0. А при использовании ранее назначенного ключа старое значение будет перекрыто новым.

Вот общий формат определения массива:

аrrау( [ключ =>] значение
          , ...
          )

3.2.5.2. Модификация массивов

В большинстве случаев массивы создают для того, чтобы затем модифицировать или извлекать хранящуюся в них информацию. Для этого используется заимствованный из Си и Perl механизм, при котором ключ помещается в квадратные скобки и указывается после имени массива. Вообще говоря, легче показать это на примере:

$аrr[ключ] = значение;
$аrr[] = значение;
// Ключ должен представлять собой неотрицательное целое число
// или строку, а значение может представлять собой произвольный
// объект

Если на момент обращения массив $ аrr еще не существует, он будет автоматически создан. (Так что вы можете использовать это как альтернативный способ создания массива.) Для того чтобы изменить значение отдельного элемента массива, вы попросту присваиваете ему новое значение. А если вы хотите удалить пару ключ-значение, вам необходимо использовать функцию unset ( ).

3.2.5.3. Примеры работы с массивами

Я уже упоминал выше, что массивы в РНР представляют собой весьма гибкий тип данных, который позволяет реализовать практически любые структуры данных. Вот несколько примеров, которые можно рассматривать как наброски практического использования массивов:

// Объявление массива
$а = аrrау( 'цвет' => 'красный',
                'вкус' => ' сладкий ' ,
                'форма ' => ' круглая ' ,
                'название' => 'клубника',
                , 4           // ключ будет равен 0
                );

// полностью эквивалентно
$а['цвет'] = 'красный'
$а['вкус'] = 'сладкий'
$а[ 'форма'] = 'круглый';
$а[]           =4;           // ключ будет равен 0

$b[] = 'а'
$b[] = 'b'
$b[] = 'с'
// В результате будет сформирован массив
// ( 0 => 'а' , 1 => 'b' , 2 => 'с' )

$тар = аггау( 'version'           => 4
          , 'OS'                               => 'Linux'
          , 'lang'                             => 'english'
          , 'short_tags'                    => true
          );

// только числовые ключи, которые генерируются
// PHP-машиной автоматически
$array = аrrау( 7
                      , 8
                      , 0
                      , 156
                      , -10
                      );
// создает массив ( 0 => 7, 1 => 8, ...)

$switching = array(
          10 // ключ = 0
          ,5                     => 6
          , 3                     => 7
          , 'а'           => 4
          , 11 // ключ = 6 (последнее значение было 5)
          , '8'           => 2 // ключ = 8 (так как это целое!)
          , '02'         => 77 // ключ = '02' (строчный)
          ,0                     => 12 // значение 10 будет перекрыто 12
          );

// пустой массив
$empty = array( ) ;

$colors = array ('красный','синий','зеленый','желтый');

foreach ( $colors as $color )
{
          echo "Вам нравится $color цвет?\n";
}

/* результат:
Вам нравится красный цвет?
Вам нравится синий цвет?
Вам нравится зеленый цвет?
Вам нравится желтый цвет?
*/

К сожалению, измененение значения массива в таких циклах не допускается. Поэтому необходимо использовать обходной маневр:

foreach ( $colors as $key => $color )
{
          // Это не сработает!
          //$color = strtoupper($color);

          //А вот это сработает правильно:
         $colors[$key] = strtoupper($color);
}
print_r($colors);

В результате, при правильно установленной локали [2], вы получите:

Array
(
          [0] => КРАСНЫЙ
          [1] => СИНИЙ
          [2] => ЗЕЛЕНЫЙ
          [3] => ЖЕЛТЫЙ
)

В старом добром Фортране индексы массивов начинались с 1. Это уже потом торжество Бейсика, который профессионалы и по сей день называют «Фортраном для недоразвитых», привело к смещению начала отсчета к 0. В следующем примере мы создадим массив, индексы которого начинаются с 1.

$firstquarter = array(l => 'Январь', 'Февраль', 'Март');
print_r($firstquarter);

В результате мы получим:

Array (           [1] => 'Январь'
          [2] => 'Февраль'
          [3] => 'Март'
)

В следующем примере мы заполним массив списком всех объектов в текущем каталоге.

$handle = opendir('. ');
while ( $file = readdir($handle) )
{
          $files[] = $file;
}
closedir ($handle); '

3.2.6. Классы и экземпляры

В PHP-машине, как и в других современных системах программирования, реализована поддержка объектно-ориентированного подхода с использованием объектной модели, заимствованной из C++. В соответствии с этой моделью ее основой является класс, представляющий собой аналог объекта из Паскаль-ориентированных объектных систем. Конкретная реализация класса в системе называется экземпляром класса.

Для того чтобы инициализировать экземпляр класса, вы используете оператор new, который связывает с переменной вновь создаваемый экземпляр:

<?php
class foo {
          function do_foo() {
               echo "Работает класс foo.
          }
}

$bar = new foo;
$bar->do_foo() ;
?>

3.2.7. Ресурсы

Ресурс представляет собой специальную переменную, в которой хранятся ссылки на внешние ресурсы. Эти ресурсы создаются и используются с помощью специальных функций.

С переходом в РНР 4 на ядро Zend для контроля за распределением ресурсов используется заимствованный из Лисп механизм сборки мусора, основанный на счислении ссылок на объекты. Это означает, что ресурс освобождается, как только в системе на него не остается ни одной ссылки. Таким образом, вам не нужно самостоятельно освобождать ресурс: как только вы «забудете» о нем, РНР-машина самостоятельно распорядится освободить занимаемую им область памяти.

примечание
       Постоянные соединения с базами данных представляют собой специальные структуры, которые сборщиком мусора не уничтожаются.

3.2.8. Null

В РНР 4 введена специальная конструкция Null, которая по аналогии с undef в языке Perl предназначена для обозначения переменных, которые не имеют значения. Допускается также представление NULL.

Никаких сложностей в использовании этого значения нет. В настоящее время вы можете использовать его единственным способом:

$var = Null;

3.2.9. Автоматическое преобразование типов

РНР не требует явного определения типов при создании переменных. Тип переменной определяется динамически, исходя из контекста, в котором используется эта переменная. Иначе говоря, если вы присваиваете некоторой переменной строковое значение, эта переменная становится строковой. А если впоследствии вы поместите в нее число, то переменная станет числовой.

Примером автоматической работы преобразователя типов может служить оператор сложения «+». Если хотя бы один из операторов является вещественным числом, то все операнды интерпретируются как вещественные числа (с приведением к этому типу, если это необходимо) и результат операции также является вещественным числом. В противном случае операнды рассматриваются как целые числа и результат также является целым числом. Обратите внимание, что работа опера- тора сложения не изменяет самих типов операндов, а только оказывает влияние на интерпретацию их значений:

$foo = "0";                          // $foo представляет собой строку(АSСII48)

$foo +=2;                           //а теперь это целое число (2)
$foo = $foo + 1.3;              // теперь здесь вещественное число (3.3)
$foo = 5 + "10 маленьких поросят";          // снова целое число (15)
$foo = 5 + "10 больших свиней";           // все равно целое (15) 


совет
       Особенности интерпретации строк в последних двух примерах рассматриваются в разделе 3.2.4.4.

Если вы хотите принудить PHP-машину интерпретировать переменную как принадлежащую к заданному вами типу, обратитесь к разделу 3.2.10. Если же вы хотите изменить тип переменной, используйте функцию settype ( ).

3.2.10. Приведение типа переменных

Приведение типа в РНР работает точно так же, как и в Си: вы просто указываете желаемый тип переменной в скобках перед ее именем. Например:

$foo = 10;                          // $foo является целым числом
$bar = (double) $foo;      // $bar становится вещественным

На сегодняшний день поддерживаются следующие операторы приведения:

  • (int), (integer) — приведение к целочисленному типу,
  • (bool), (boolean) — приведение к логическому типу,
  • (real), (double), (float) — приведение к вещественному числу,
  • (string) — приведение к строковому типу,
  • (array) — приведение к массиву,
  • (object) — приведение к классу (объекту).

совет
       Вместо приведения переменной к строке вы можете просто заключить ее в двойные кавычки...

Вы можете отделять оператор приведения от имени переменных или отделять окружающие тип скобки произвольным количеством пробелов:

$foo = (int) $bar;
$foo = ( int ) $bar;

Во время приведения или преобразования массива в строку результатом операции будет слово с зарезервированным именем array. При преобразовании класса в строку результатом будет слово obj ect. А при преобразовании строки или скаляра в массив исходная переменная попросту станет первым элементом вновь создаваемого массива:

$var = 'колбаска ' ;
$arr = (array) $var;
echo $arr[0];        // напечатает 'колбаска'

Наконец, при приведении скаляра или строки к классу, переменная превратится в поле класса с зарезервированным именем scalar:

$var = 'сосиска' ;
$obj = (object) $var;
echo $obj->scalar;        // выведет 'сосиска'


назад
далее

Сайт управляется системой uCoz