Очень широкий вопрос.Я поставил пример с числами, для строк существует несколько методов кодирования / декодирования.
Сначала определите ваши функции кодирования / декодирования.(Примечание: в этом примере я работаю с положительными числами. Вы можете написать свои собственные методы кодирования для строк).Когда вы получаете доступ к своим элементам, вы всегда должны знать, закодировано ли значение или нет, поэтому мы всегда представляем закодированные числа как отрицательные числа, и мы предполагаем, что отрицательные числа являются закодированными числами.(Для строк вы можете предшествовать нормальным строкам, например, «0», а кодированным строкам - «1». Существуют и другие методы.)
//Very simple functions, should be complex functions.
function encode($x) { return - $x * 2; }
function decode($x) { return - $x / 2; }
Теперь представьте массив:
$arr = array('a'=>123,'b'=>456,'c'=>789);
Чтобы кодировать 'c':
$arr['c'] = encode($arr['c']);
... или кодировать все элементы в вашем массиве:
foreach($arr as $key=>$val)
$arr[$key] = encode($arr[$key]);
Для доступа к членам массива:
function getArrayMember($key)
{
if ($arr[$key] < 0) //This is an encoded number...
return decode($arr[$key]); //...decode it.
else //Normal numbers...
return $arr[$key]; //...return as is.
}
Это было для чисел.Вы можете реализовать или найти подходящие методы кодирования / декодирования для строк.