Хранение чего-либо как unsigned tinyint в php - PullRequest
0 голосов
/ 02 августа 2011

Есть ли способ явно хранить мои числа в php как tinyint (1 байт вместо 4).

Или я мог бы применить это только, сохранив их 4 на 4 в int? (используя несколько бинарных операций)

Я генерирую эти значения, разбивая строку с использованием str_split и интерпретируя эти байты как целые через unpack ('C', ..). В настоящее время я храню эти значения в массиве как отдельные целые числа, но это могло бы сэкономить много места, если бы я мог как-то хранить их как крошечные.

1 Ответ

1 голос
/ 02 августа 2011

PHP имеет два типа данных, которые вы можете использовать здесь: integer и string.
В PHP нет других типов, которые вы можете выбрать (float не будет хорошим выбором для целых чисел, другие типы не подходят).

Обычно int - это 32 или 64 бита, строка - 1 байт на символ. * Я предлагаю, чтобы, если у вас не было много чисел, вы никогда не увидите никаких проблем с 32-битными целыми числами , Если вы абсолютно уверены, что хотите сохранить пробел память ** и ваши номера имеют максимум 3 цифры, вы можете обрабатывать свои числа как строки. Есть даже расширение BCMath , которое позволит вам работать с числами строк напрямую, без необходимости приводить их назад и вперед. Хотя это довольно много хлопот за возможно очень ограниченный выигрыш.

Видя, что MySQL TINYINT обычно используется для логических значений, тем не менее, учтите, что PHP имеет логический тип ...!


* Один байт на однобайтовый символ, то есть.
** Поскольку PHP-скрипты, как правило, только очень временные, у вас должны быть проблемы только с пиковым использованием памяти, а не с объемом памяти. Получение большего объема оперативной памяти может быть более эффективным решением, чем игра с типами.

...