PHP资源ID是唯一的吗?

PHP资源ID是唯一的吗?,php,Php,每个PHP实例的PHP资源ID是否唯一?将各种资源转换为字符串是否会返回“资源id#X”(其中X是一些十进制数)?是否有一个函数返回资源ID(我知道要获取资源类型m,但没有找到类似于get\u resource\u ID())的内容),还是必须这样做 function get_resource_id($resource) { return is_resource($resouce) ? substr((string) $resource, 13 /* strlen

每个PHP实例的PHP资源ID是否唯一?将各种资源转换为字符串是否会返回“资源id#X”(其中
X
是一些十进制数)?是否有一个函数返回资源ID(我知道要获取资源类型m,但没有找到类似于
get\u resource\u ID()
)的内容),还是必须这样做

function get_resource_id($resource)
{
    return is_resource($resouce) 
           ? substr((string) $resource, 13 /* strlen("Resource id #") */)
           : NULL;
}

Jakub,是的,PHP将始终为当前使用的每个资源提供唯一的ID。当资源未设置()或空闲时,例如。然后该ID再次可用,PHP可以再次重用这些资源

如果您正在“缓存”或在会话中保留资源ID并重用它们,请小心,因为PHP可能会释放一个资源,然后使用该ID重新创建一个新资源,而您的旧资源ID可能指向新的内容

所以你有它,资源是独一无二的,但不是永远

希望这有助于为您揭开PHP中资源类型的神秘面纱。

简单易懂

intval($resource)

关于“资源id#1”的结构,does声明:“不要依赖此结构;它可能会更改。”,因此不推荐您获取id的方法。@w3d不幸的是,我不知道有任何更好的(其他)方法来获取id。是吗?对不起,不,不是真的!除了验证是否确实返回了一个数字字符串之外,如果没有,请尝试另一种方法获取ID,例如“#”上的explode(),并获取第二个元素(如果存在)等。返回的字符串是否完全依赖于(版本)PHP?或者资源本身可能会影响施法过程中发生的事情吗?!TBH,如果它只是PHP,那么你可能会非常安全,我会想。。。现在!?如果您只需要一个唯一的Id,那么您可以使用整个字符串,也可以使用散列。在某些环境中,两个不同的用户在连接到相同(共享)资源时不可能获得相同的资源Id吗?还是不可能?