PHP key() 函数在对象内部不起作用


php key() function not working inside object

我有这个函数来获取数组中元素$clientsObjects索引键。数组中的每个元素都保留一个客户端类的对象,该对象具有返回套接字资源的 getSocket() 方法。

我 100% 确定 $socket 函数参数等于数组中的 Client->getSocket() 之一。由于某种原因,代码永远不会输入 if 语句...有什么建议吗?

function getClientObjectKey($socket)
{       
    global $clientsObjects;             
    while ($sock = current($clientsObjects))
    {                       
        if ($sock->getSocket() == $socket)          
            return key($clientsObjects);    
        $sock = next($clientsObjects);
    }           
}
您可以使用

foreach做同样的事情,这将允许您直接访问密钥并为您进行迭代,因此您不必弄乱currentnextkey

foreach ($clientsObjects as $key => $sock){                       
  if ($sock->getSocket() == $socket)          
    return $key;    
} 

无论如何,在您的情况下使用key()应该不是问题,因此我认为您尝试比较的对象之间存在差异。