Avatar billede jammerlab Nybegynder
13. november 2003 - 21:46 Der er 37 kommentarer og
1 løsning

echo et array

hvordan?

$command = array_shift ($params);

hvordan echo'er jeg hele array'et?
Avatar billede jammerlab Nybegynder
13. november 2003 - 21:47 #1
Det var kun 15 point hehe
Avatar billede jammerlab Nybegynder
13. november 2003 - 21:49 #2
Skriver man ikke bare echo "$params";
Avatar billede jammerlab Nybegynder
13. november 2003 - 21:49 #3
altså echo array'et? ... for hvis man gør så liger fejlen et andet sted :/
Avatar billede detox Nybegynder
13. november 2003 - 21:50 #4
print_r ($params);
Avatar billede detox Nybegynder
13. november 2003 - 21:51 #5
Evt. lidt pænere opstilling med:

echo "<pre>";
print_r ($params);
echo "</pre>";
Avatar billede ztyxx Nybegynder
13. november 2003 - 21:52 #6
<?
$alfabet = array("abc", "def", "ghi");

for ($i = 0; $i < count($alfabet); $i++) {
$udskriv .= "<span>".$alfabet[$i]." </span>";
}
echo $udskriv;
?>
Avatar billede detox Nybegynder
13. november 2003 - 21:53 #7
Du kan osse loope gennem arrayet:

foreach ($params as $val) {
  echo $val."<br />";
}
Avatar billede spunk13 Nybegynder
13. november 2003 - 21:55 #8
for ($i = 0; count($params) >= $i; $i++) {
echo $params[$i]."<br>";
}

en anden metode :)
Avatar billede erikjacobsen Ekspert
13. november 2003 - 22:01 #9
$a = Array("abc","def","ghi");
print join (",",$a);
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:02 #10
nu skulle der jo helst ikke komme , med ud når det ikke er med i array'et
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:05 #11
Det er pga. dette:

            case "luder":
            fputs ($this->ircsocket, $params . "\r\n");
          break;

params indeholder så en masse tekst... men $params er et array så man kan ikke bare sende $params afsted :O)
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:09 #12
Så derfor er det også forkert af mig at sige hvordan echoer men det ... ikke det den skal jeg skal bare vide hvad variablen vil hede for hele array'et
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:26 #13
Nogen af jer der kan forstå det her?

case "luder":
$lala = implode(" ", $params);
fputs ($this->ircsocket, "$lala" . "\r\n");
break;

Den string jeg skriver er følgende:

test luder PRIVMSG sniper^scripter  safsd asdf

Det den skriver tilbage er: asdf

Et eller andet sted så midster jeg alt foran det sidste ord. Nogen af jer der kan se hvad problemet er?
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:28 #14
Og vi snakker IRC her :) så det den burde skrive tilbage til mig er selvf. safsd asdf men den skriver kun det sidste ord.
Avatar billede erikjacobsen Ekspert
13. november 2003 - 22:30 #15
implode er det samme som join, så du får sat mellemrum mellem elementerne
i $params. Er du sikker på dette array indeholder det rigtige.

øhm, hvis jeg ikke må sætte komma mellem elementer, hvorfor må du så
sætte blanke - det stod det jo heller ikke..... *g*
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:35 #16
hehe tag dig ikke så meget af hvad jeg siger erikjacobsen :D Vi skal bare havde det til at fungere! ...

function on_private_msg ($nick, $ident, $params) {
$command = array_shift ($params);
switch ($command) {

Det er hvad der kommer lige over den tidligere kode... det jeg forstår ved det er at nick og ident af den der skriver bliver gemt, og params er den der indeholder beskeden som er skrevet! Implode er det samme som join ja.. så hvis $params er et array som indeholder alt tekst hvad ville den så hede som variabel for at få alt ud af den?
Avatar billede erikjacobsen Ekspert
13. november 2003 - 22:47 #17
$command = array_shift ($params);
betyder at man tager det første element ud af arrayet $params. Så det er
det jo så nok.

Lav lidt testudskrifter med print_r som andre har skrevet om. Så kan vi
se hvad der sker.
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:49 #18
Okay smider

echo "<pre>";
print_r ($params);
echo "</pre>";

inde lige efter

function on_private_msg ($nick, $ident, $params) {

så kan jeg vel se hvad pokker det er den gemmer :)
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:51 #19
test luder PRIVMSG sniper^scripter safsd asdf sadf asdf asdf

<pre>Array
(
    [0] => test
    [1] => luder
    [2] => PRIVMSG
    [3] => sniper^scripter
    [4] => safsd
    [5] => asdf
    [6] => sadf
    [7] => asdf
    [8] => asdf
)
</pre>

Okay så jeg kan jo se den faktisk gemmer alt hvad jeg skriver i beskeden. Så hvordan for jeg så sendt hele beskeden afsted? :)
Avatar billede erikjacobsen Ekspert
13. november 2003 - 22:56 #20
så skulle den jo gå i case "test"
Avatar billede jammerlab Nybegynder
13. november 2003 - 22:58 #21
huh?
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:03 #22
Ja, det første ord er "test"
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:05 #23
nej test er passwordet :) For at få lov til at benytte commandoerne... case er luder :)
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:05 #24
test luder PRIVMSG sniper^scripter lala1 lala2 lala3 lala4 lala5 lala6 lala7
lala8 lala9

<pre>Array
(
    [0] => test
    [1] => luder
    [2] => PRIVMSG
    [3] => sniper^scripter
    [4] => lala1
    [5] => lala2
    [6] => lala3
    [7] => lala4
    [8] => lala5
    [9] => lala6
    [10] => lala7
    [11] => lala8
    [12] => lala9
)
</pre>

Sender lala9 tilbage og intet andet.
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:06 #25
Det er muligt du gerne vil have at det er sådan, men det ser det ikke
ud til med de stumper kode du hidtil har vist
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:09 #26
Hehe nej den skulle gerne sende:

    [4] => lala1
    [5] => lala2
    [6] => lala3
    [7] => lala4
    [8] => lala5
    [9] => lala6
    [10] => lala7
    [11] => lala8
    [12] => lala9

Alle dem tilbage til mig men den sender kun nummer 12 :D og jeg kan ikke lige se hvad fejlen er.
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:11 #27
Så må du jo stirre på din kode til det går op for dig.

...eller dele den med os andre.
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:14 #28
hehe så du kan heller ikke se det? :)
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:15 #29
Jeg kan love dig at jeg kan se det, men ikke fra de snoldede kodestumper du har smidt her
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:17 #30
hehe ;) Jamen jeg troede jo det var det problemet lå... :D kender du den side hvor man kan paste noget kode? For så smider jeg alt ind der... men syntes det er synd du skal se på mange linjers kode når jeg tror problemet er der ;)
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:18 #31
Ja, sådan en side kender jeg godt: www.eksperten.dk - du har måske hørt om den
Avatar billede ztyxx Nybegynder
13. november 2003 - 23:20 #32
*LOL*@erikjacobsen

er den side god du lægger link til??
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:21 #33
Nej, der er altid en masse bøvl og ballade
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:22 #34
hehe ffs :P når men here goes... 2 filer...

Botling.php
-----------------------

    <?
        define ("BOT_PASSWORD", "test");
      include ("ircbot.php");
       
        class botling extends IRC_Bot {
            function botling ($n = "|BotlingPHP|", $r = "tiscali.dk.quakenet.org", $p = '6667', $e = true, $d = "Botling via PHP", $u = "BotlingPHP", $l = "localhost", $ns = "BotlingPHP") {
                $this->IRC_Bot();
                $this->nick = $n;
            $this->nickservpword = $ns;
                $this->username = $u;
                $this->description = $d;
                $this->localhost = $l;
                $this->remotehost = $r;
                $this->remoteport = $p;
                $this->echoincoming = $e;
            }
           
            function on_private_msg ($nick, $ident, $params) {
           
            echo "<pre>";
        print_r ($params);
        echo "</pre>";
           
                $password = array_shift ($params);
                if ($password == BOT_PASSWORD) {
                    $command = array_shift ($params);
                    switch ($command) {
            case "luder":
            $lala = implode(" ", $params);
            fputs ($this->ircsocket, "$lala" . "\r\n");
          break;
                    case "hehe":
                        $this->lala ($params[0]);
                        break;
                    case "hihi":
                        $this->lala (join($params, " "));
                        break;
                    case "haha":
                        $this->lala (join($params[0], " "));
                        break;
                    case "JOIN":
                        $this->irc_join ($params);
                        break;
                    case "PART":
                        $this->irc_part ($params[0]);
                        break;
                    case "QUIT":
                        $this->irc_quit (join($params, " "));
                        break;
                    case "MSG":
                        $user = array_shift ($params);
                        $this->irc_msg($user, join($params, " "));
                        break;
                    case "OP":
                        $this->irc_op($params[0], $params[1]);
                        break;
                    case "DEOP":
                        $this->irc_deop($params[0], $params[1]);
                        break;
                    case "ACTION":
                        $user = array_shift ($params);
                        $this->irc_action($user, join($params, " "));
                        break;
                    }
                } else {
                    $this->irc_msg($nick, "You are not my master.");
                }
            }
        }
        $mybot = new botling("|BotlingPHP|");
        echo $mybot->bot_connect();
        echo $mybot->bot_go();
    echo $mybot->irc_join("#amici");
   
    ?>
--------------------------
ircbot.php
--------------------------

    <?   
        class IRC_Bot {
        var $nick;
    var $nickservpword;
        var $username;       
            var $description;
            var $localhost;
            var $remotehost;
            var $remoteport;
            var $echoincoming;
            var $ircsocket;
            function IRC_Bot() {
        set_time_limit(0);
                ob_end_flush();
                echo "\r\n";
            }
            function bot_connect () {
                // connect to IRC server
                $this->ircsocket = fsockopen ($this->remotehost, $this->remoteport) ;
                if (! $this->ircsocket) {
                    die ("Error connecting to host.");
                }
                print "Connected to: $this->remotehost:$this->remoteport\n";
                fputs ($this->ircsocket, "USER botling 66.119.161.165 irc.knightwatcher.net :Botling @ PHP\r\n");
                fputs ($this->ircsocket, "NICK $this->nick\r\n");
            fputs ($this->ircsocket, "IDENTIFY $this->nickservpword\r\n");           
        }
            function bot_go () {
                // IRC loop
                while (!feof($this->ircsocket)) {
                    $incoming = fgets ($this->ircsocket, 1024);
                    $incoming = str_replace( "\r", "", $incoming);
                    $incoming = str_replace("\n", "", $incoming);
                    if ($this->echoincoming) echo $incoming . "\n";
                    if (substr($incoming, 0, 1) == ":") {
                        $prefix = substr ($incoming, 0, strpos($incoming, ' '));
                        $incoming = substr ($incoming, strpos($incoming, ' ') + 1);
                    } else {
                        $prefix = "";
                    }
                    $command = substr ($incoming, 0, strpos($incoming, ' '));
                    $incoming = substr ($incoming, strpos($incoming, ' ') + 1);
                    $params = explode (" ", $incoming);
                    if ($command == "PING") fputs($this->ircsocket, "PONG $incoming\r\n");
                    $this->bot_parse ($prefix, $command, $params);
                }       
                fputs($this->ircsocket, "QUIT Unexpected\r\n");
            }
           
            function bot_parse ($prefix, $command, $params) {
                if ($command == "PRIVMSG") {
                    $nick = substr ($prefix, strpos($prefix, ":") + 1, strpos($prefix, "!") - 1);
                    $ident = substr ($prefix, strpos($prefix, "!"));
                    $target = array_shift ($params);
                    $params[0] = substr ($params[0], 1);
                    if (substr($target, 0, 1) == "#") {
                        $this->on_channel_msg ($nick, $ident, $target, $params);
                    } else {               
                        $this->on_private_msg ($nick, $ident, $params);
                    }
                }
                if ($command == "NOTICE") {
                    $nick = substr ($prefix, strpos($prefix, ":") + 1, strpos($prefix, "!") - 1);
                    $ident = substr ($prefix, strpos($prefix, "!"));
                    array_shift ($params);
                    $params[0] = substr ($params[0], 1);
                    $this->on_notice ($nick, $ident, $params);
                }
            }
            ////////////////////////////////////////////////////
            //                IRC FUNCTIONS (call these to perform various irc tasks.)    //
            ////////////////////////////////////////////////////
            function irc_write ($message) {
                fputs ($this->ircsocket, $message . "\r\n");
            }

            function lala ($message) {
                $this->irc_write("$message");
            } 
            function irc_join ($channel) {
                $this->irc_write("JOIN $channel");
            }
            function irc_part($channel) {
                $this->irc_write("PART $channel");
            }
            function irc_quit ($reason) {
                $this->irc_write("QUIT :$reason");
            }
            function irc_notice ($user, $message) {
                $this->irc_write("NOTICE :$message");
            }
           
            function irc_msg ($user, $message) {
                $this->irc_write("PRIVMSG $user :$message");
            }
            function irc_action ($user, $message) {
                $this->irc_write ("PRIVMSG $user :" . chr(1) ."ACTION $message");
            }       
            function irc_mode ($channel, $user, $mode) {
                $this->irc_write ("MODE $channel $mode $user");
            }
            function irc_op ($channel, $user) {
                $this->irc_mode ($channel, $user, "+o");
            }
            function irc_deop ($channel, $user) {
                $this->irc_mode ($channel, $user, "-o");
            }
           
            ////////////////////////////////////////////////////
            //                IRC EVENTS (override these in your derived class.)               
//
            ////////////////////////////////////////////////////
           
            function on_private_msg ($nick, $ident, $params) {
            }
           
            function on_channel_msg ($nick, $ident, $chan, $params) {
            }       
            function on_notice ($nick, $ident, $params) {
            }
           
           
        }
    ?>
Avatar billede erikjacobsen Ekspert
13. november 2003 - 23:27 #35
Suk - tror du vi sidder her for at du skal spilde vores tid. Du skriver før at

function on_private_msg ($nick, $ident, $params) {
$command = array_shift ($params);
switch ($command) {

er de linier, der kommer ovenover dem, du har vist før. Det kan vi jo se
nu, at det ikke passer. Der er mere. Jeg gider simpelthen ikke hjælpe
en person, der på den måde lyver for mig og spilder vores tid. Farvel med dig.
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:28 #36
lol :P Okay... men det var så de linjer op til den funktion der er skyld i problemerne...
Avatar billede jammerlab Nybegynder
13. november 2003 - 23:35 #37
detox svar plz... u 2 erikjacobsen selv om du er uforskammet :P
Avatar billede detox Nybegynder
14. november 2003 - 00:41 #38
jo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester