Новые книги

Данное пособие является введением в основы программирования на двух языках. Сначала рассматриваются простые примеры на Pascal с описанием алгоритмов на русском языке и использованием графических блок-схем, затем эти же примеры приводятся в программах на C.
С помощью этой книги вы сможете заработать в Интернете солидный капитал. Быстро! Всемирно известный автор книг о Секрете притяжения любых благ – успеха, счастья, богатства – Джо Витале расскажет о своих секретах ведения бизнеса в Интернете. В этой книге нет сложной технической информации – в ней описывается, как с помощью простых и эффективных методов можно значительно повысить уровень продаж в любом интернет-магазине, какие бы товары или услуги в нем ни предлагались. Вы узнаете, как можно заработать на интернет-аукционах, партнерских программах, на сайтах социальных сетей, а также на любой информации, которой вы располагаете. Вы научитесь создавать гипнотические тексты для своего веб-сайта и завоевывать доверие пользователей. Книга написана доступным языком и предназначена для читателей любого уровня подготовки.

Строки

Учебник РНР
НазадГлава 34. Создание Переменных Вперёд

Строки

Для работы со строками потребуется несколько больше усилий. Как указывалось ранее, все строки, которые будут ассоциированы с структурами внутренних данных Zend, должны быть ассоциированы с использованием собственных функций менеджмента памяти Zend. Ссылки на статические строки или строки, размещённые стандартными способами, не допускаются. Для присвоения строк вы должны получить доступ к структуре str в контейнере zval.value. Соответствующий тип это IS_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string->type = IS_STRING;
new_string->value.str.len = strlen(string_contents);
new_string->value.str.val = estrdup(string_contents);

Обратите внимание на использование estrdup() Zend'а. Конечно, вы можете также использовать предопределённый макрос ZVAL_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);

ZVAL_STRING принимает третий параметр, который указывает, должно ли содержимое строки дублироваться (с использованием estrdup()). Установка этого параметра 1 вызывает дублирование строки; 0 просто использует предоставляемый указатель на содержимое переменной. Этот особенно применимо, если вы хотите создать новую переменную, ссылающуюся на строку, которая уже размещена во внутренней памяти Zend.

Если вы хотите отсечь стоку, начиная с определённой позиции, или уже знаете её длину, вы можете использовать ZVAL_STRINGL(zval, string, length, duplicate), который принимает длину строки как установленную для новой строки. Этот макрос быстрее, чем ZVAL_STRING, и работает безопасно в двоичном режиме.

Для создания пустых строк установите длину строки 0 и используйте empty_string как содержимое:

new_string->type = IS_STRING;
new_string->value.str.len = 0;
new_string->value.str.val = empty_string;

Конечно, для этого также имеется макрос (ZVAL_EMPTY_STRING):

MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Назад Оглавление Вперёд
Double (Float) Вверх Булевы