为了账号安全,请及时绑定邮箱和手机立即绑定

重新启动PHP数组索引

重新启动PHP数组索引

PHP
慕斯709654 2021-05-03 17:16:27
我将解释:我有一个套接字socket.php文件,该文件将为每个用户添加一个连接,以便该用户具有来自不同设备的多个连接。$clients[] = $socketChange; // array_push($clients,$socketChange); // 505$end = key (array_slice ($clients, -1, 1, TRUE)); // extract 505$userConexion [$userId] [] = $end; // add to clientID socket 505您要做的是将每个连接添加到客户端阵列,然后最后添加的套接字将其分配给相应的用户。因此用户可以在不同设备上进行多个会话,并且总计将实时接收信息。现在我的问题是...我如何控制位置,即,如果用户连接1k了用户编号1001并与用户断开连接,$ clients他将向我$ clients [1001]展示如何在不删除已连接用户的情况下重新启动计数器。我删除了客户端套接字,并unset() array_shift()重新排序了错误的$clients套接字。例子:$clients[0] = resource 0;$clients[1,433]  = empty;$clients[434]  = resource 434;$clients[435]  = resource 435;$clients[436,450]  = empty;$clients[451]  = resource 435;$clients[452,999]  = empty;$clients[1000] = resource 1000;新的连接1001 添加到空位置。例子:<?php $a1 = array();$a2 = array();for ($i=1; $i < 4 ; $i++) {     $a1[] = array("hello{$i}" => "hello{$i}");    $a2[] = array("hello{$i}" => "hello{$i}");}echo "<pre>";unset($a1[1]);unset($a2[1]);$a1[] = array("hello11" => "hello11");array_push($a2, array("hello11" => "hello11"));print_r($a1); // 0,2,3print_r($a2); // 0,2,3// need insert in position empty in this example `1`.
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我不确定要了解您的问题,但是如果要将新连接的数据添加到数组的第一个未占用索引中,可以执行以下操作:


for($i=0; $i<count($clients)+1; $i++) {

  if(!isset($clients[$i]) {

    $clients[$i] = resource 1001;

    break;

  }

}

如果该索引仍然存在于数组中并且不再具有任何值,请使用empty($clients[$i])代替!isset($clients[$i])。


查看完整回答
反对 回复 2021-05-07
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信