我正在创建一个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] 删除。
我来说两句