1

我有这个函数来获取 $clientsObjects 数组中元素的索引键。数组中的每个元素都保留一个 Client 类的对象,该对象具有一个 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);
    }           
}
4

1 回答 1

3

您可以使用 wich 执行相同操作,foreach这将使您可以直接访问密钥并为您进行迭代,因此您不必弄乱current,nextkey

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

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

于 2012-05-04T13:14:45.133 回答