Возможно ли получить уникальный идентификатор переменной scalar / array в PHP5.3 Что-то вроде хеша объекта для объектов. Например, у меня есть:
$a = array(1, 2, 3); $b = &$a;
поэтому уникальный идентификатор для переменных $ a и $ b должен быть таким же, может быть, вырван из указателя памяти. Я не нашел альтернативной функции spl_object_hash
.
небольшое обходное решение:
function unique_var($var) { return md5(serialize($var)); }
function createHash($salt, $extra, $length = 8) { $hashSeed = sprintf( '%d:%s:%s', microtime(true), $salt, hash('sha1', $extra) ); do { $hashSeed .= ':' . uniqid(); $hash = hash('sha256', $hashSeed); $hash = substr($hash, 0, $length); } while (hashExists($hash)); // loop until `hashExists` returns `FALSE`. return $hash; } function hashExists($hash) { // ... check if $hash is unique ... // for example by comparing with a list of stored hashes return false; // return false when $hash is unique }
Например, вы можете использовать его так:
$arr = array(1, 2, 3); $salt = $arr[0]; // generate some salt, could be anything $extra = $arr[1] . $arr[2]; // generate some extra spice $length = 32; // let's get a long hashcode (defaults to 8) $hash = createHash($salt, $extra, $length); print 'Hashcode: ' . $hash;
Что бы вывести что-то в этом направлении:
Hashcode: 3d267e5c1232476b75d8c3dbe68474c9