Я использую Cassandra, и я сохранил некоторые байтовые представления как ID. Все работает нормально, однако данные (id) не годятся для вывода.
$users = $db->get('1');
echo '<pre>';
print_r($users);
die();
Выходы
Array
(
[��� X��W��c_ ] => Array
(
[id] => ��� X��W��c_
[name] => steve
[surname] => moss
)
[�*B�X��y�~p��~] => Array
(
[id] => �*B�X��y�~p��~
[name] => john
[surname] => doe
)
)
Как видите, идентификаторы - это некоторые странные символы, потому что они представляют собой байтовые представления в базе данных. Они на самом деле выглядят как \xf5*B\xa0X\x00\x11\xe1\x99y\xbf~p\xbc\xd1~
.
В PHPCASSA есть функция CassandraUtil::import();
, в которую я могу передать эти байты, и она вернет guid. Он работает нормально, но я хочу, чтобы мой массив автоматически преобразовывался из байтов в направляющие.
Единственный вариант, который я нахожу, это циклически проходить по каждому элементу в массиве и присваивать ему новое значение. Почему-то я думаю, что это не лучший подход. Есть ли другие способы сделать это?
TL; DR
Иметь массив с байтами, как указано выше, необходимо использовать CassandraUtil::import();
для ключей массива и идентификаторов, чтобы получить читаемые идентификаторы. Какой самый эффективный способ сделать это.