我有这个函数来获取数组中元素$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
做同样的事情,这将允许您直接访问密钥并为您进行迭代,因此您不必弄乱current
,next
和key
:
foreach ($clientsObjects as $key => $sock){
if ($sock->getSocket() == $socket)
return $key;
}
无论如何,在您的情况下使用key()
应该不是问题,因此我认为您尝试比较的对象之间存在差异。