duanke2503 2012-03-18 01:06
浏览 21
已采纳

PHP'fwrite'不会变量

I'm creating an IRC bot, and I wanted to store some functions in a different file. I reference the file in my main file with include() and it works, but when I try to give fwrite() a variable like so:

$data ="THIS IS DATA
";
fwrite($sock, $data);

It throws this error:

PHP Warning: feof() expects parameter 1 to be resource, null given in /home/kinz/Desktop/Eve/Eve.php on line 18

PHP Warning: fgets() expects parameter 1 to be resource, null given in /home/kinz/Desktop/Eve/Eve.php on

But when I put:

fwrite($sock, "THIS IS DATA
");

It works perfectly fine. Here is my full code:

function connect_s ($serv, $port, $nick) { $sock = fsockopen($serv, $port); fwrite($sock, "USER $nick $nick $nick :$nick
"); fwrite($socket, "NICK $nick
"); }
function write_d ($data) { fwrite($sock, $data); }
function join_c ($chan) { write_d("JOIN $chan
"); }
function get_in ($in) { for ($i = 3; $i <= count($in); $i++) { $out .= " $in[$i]"; } return trim("$out
"); }
function change_n ($nick) { write_d("NICK $nick
"); } ?>

I want to know why I can't use a variable as the second parameter in fwrite. Any help is greatly appreciated

  • 写回答

2条回答 默认 最新

  • duankao4489 2012-03-18 01:12
    关注

    Each new function has it's own scope for the variables. You've defined $sock in one function but it's not defined in the other functions. You need to do one of 3 things:

    1. Return $sock and pass it to any subsequent functions
    2. have global $sock; at the beginning of each of your functions
    3. write this all in an object class, and assign and use $this->sock as opposed to $sock

    3 would be the "best" solution, 1 would be how to accomplish this in a functional context, and 2 is probably the easiest but using globals in this way is the last resort.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用