PHP关联数组和未设置

路易斯

我正在创建一个irc机器人,我有一个用于通道的数组($ BotChannels = ['Channel'=> [],'Commands'=> [],'Type'=> []];)该机器人在mysql上进行检查当添加新通道,删除旧通道以及删除通道时,我使用for来捕获通道位置,但是当我使用unset函数从数组中删除通道时,我总是在数组代码上获得空白以下。

if(count($BotChannels['Channel']) > 0) {
            for($i = 0; $i < count($BotChannels['Channel']); $i++) {
                if(!in_array($BotChannels['Channel'][$i], $TempChan)) {
                    IrcMsg($BotChannels['Channel'][$i], 'Channel removed from database, leaving.');
                    PartChannel($BotChannels['Channel'][$i]);
                    unset($BotChannels['Channel'][$i], $BotChannels['Commands'][$i] ,$BotChannels['Type'][$i]);
                }
            }
            unset($TempChan);
        }
观点

首先,您的“ $ BotChannels”数组结构似乎无法支持持有SQL结果。

因此,我建议结构如下。

$BotChannels = [
  'key' => [  # "key" is your variable $i
     'Channel' => [],
     'Commands' => [],
     'Type' => []
  ],
];

至于你的算法

if(count($BotChannels) > 0) {
   foreach (array_keys($BotChannels) as $key) { 
      if(!in_array($key, $TempChan)) {
      IrcMsg($key, 'Channel removed from database, leaving.');
      PartChannel($key);
      unset($BotChannels[$key]);
   }
   unset($TempChan);
}

如果您坚持不更改数组“ $ BotChannels”,请确保按照您希望的方式准确填充了SQL结果。

echo '<pre>'.print_r($BotChannels, 1).'</pre>'; # TIP

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章