Brauche Hilfe bei einem Array Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Brauche Hilfe bei einem Array Problem

    Ich hab ne Funktion welche pro Servername nur einmal ausgeführt werden darf. Mir aber dennoch den dauzgehörigen Status zurückgibt. Da ich da net so geübt bin was solche Arrays angeht hänge ich.
    PHP-Code:
    function onlinecheck($servername)
    {
        global 
    $servername$port;
        static 
    $hosts;     //soll immer mit dem alten Werten aufgerufen werden.
        
    if (...)  //Überprüfung ob $servername schon im Array vorhanden ist
        
    {
            return 
    $status//vom dazugehörigen Array Element
        
    }
        else
        {
            echo 
    $servername$port;
            echo 
    "Dies darf nur einmal ausgegeben werden";
            
    $verbunden = @ftp_connect($servername$port);
            if (
    $verbunden)
            {
                echo 
    "konnte Verbinden";
                
    $status 1;        //1 steht für online
                //hier soll der Servername sowie der Status ins Array mitaufgenommen werden
            
    }
            else
            {
                echo 
    "konnte nicht Verbinden";
                
    $status 0;        //0 steht für offline
                //hier soll der Servername sowie der Status ins Array mitaufgenommen werden
            
    }
            return 
    $status;
        }


    Mfg Markus

  • #2
    in_array
    (PHP 4 )

    in_array -- Prüft, ob ein Wert in einem Array existiert
    Beschreibung
    bool in_array ( mixed needle, array haystack [, bool strict])
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      OK kapiert aber wie gebe ich dort noch den Status mit und wie füge ich dann ans Array den Servernamen sowie sein Status an? Da es nur den Status 1 oder 0 gibt muss es exakt dem Servernamen zugeordnet werden können. Deshalb kann ich mit in_array auch kein Array als Needle angeben.

      Mfg Markus
      Zuletzt geändert von markusschmitt; 15.04.2003, 11:39.

      Kommentar


      • #4
        Habs mal geschwind so gemacht.

        Kann so natürlich nicht funktionieren deshalb bitte ich um Hilfe
        PHP-Code:
        function onlinecheck($servername)
        {
            global 
        $servername$port;
            static 
        $hosts;
            if (
        in_array("$servername"$hosts))  //bekomm für folgendes schonmal ne Fehlermeldung: 
        // Wrong datatype for second argument in call to in_array in C:\apache\htdocs\ftp\ergebnis2.php on line 9

            
        {
                return 
        $status;  //Des dazugehörigen Servers
            
        }
            else
            {
                echo 
        $servername$port;
                echo 
        "Dies darf nur einmal ausgegeben werden";
                
        $verbunden = @ftp_connect($servername$port);
                if (
        $verbunden)
                {
                    echo 
        "konnte Verbinden";
                    
        $status 1;        //1 steht für online
                    
        array_push($hosts,"$servername","$status");  //Des sollte jetzt natrülich in einem 2 Dimensionalen Array sein aber ich weiß nicht wie ich des machen kann
                
        }
                else
                {
                    echo 
        "konnte nicht Verbinden";
                    
        $status 0;        //0 steht für offline
                    
        array_push($hosts,"$servername","$status");   //wie oben
                
        }
            }
            return 
        $status;

        Mfg Markus

        Kommentar


        • #5
          wie soll denn dein array aussehen?

          ich würde es wahrscheinlich so machen.
          PHP-Code:
          $hosts[] = array("name" => $servername"stat" => $status); 
          oder um einen eindeutigen index zu haben so.
          PHP-Code:
          $hosts[$servername] = $status
          zum TEST-anzeigen der jeweiligen inhalte kannst du dies verwenden.

          PHP-Code:
          echo "<pre>";
          print_r($hosts);
          echo 
          "</pre>"
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Also ich habs mir eigentlich so gedacht das ich ein 2 dimensionales Array mach. Im ersten Teil also zum Beispiel
            $host[0][] = $servername;
            $host[][0] = $status;

            Ich weiß nicht so recht was ich mit dem Index angangen soll. Der Index ist ja kein vortlaufender Wert wie 1,2,3,4,5,6,7... sondern besteht nur aus 1 und 0.
            Bei der Suche soll er mir dann alle Werte im ersten Block also $host[hier][] suchen und wenn er ein positives Ergebnis hat sprich was gefunden hat soll er mir den dazugehörigen Status zurückgeben wie z.B. $host[für 123.123.123.123][0] Also die 0 brauch ich dann als Ergebnis.

            Wenn nichts gefunden ist soll er mir testen ob online oder nicht und dann den Servernamen sowie sein Status ans Array anhängen. Nun weiß ich aber nicht wie ich da darauf zugreife bzw. eine Suche für nur das erste Array Element ([hier][]) mach.

            Wer weiß Rat?

            Mfg Markus

            Kommentar


            • #7
              $host[für 123.123.123.123][0] Also die 0 brauch ich dann als Ergebnis.
              siehe mein zweites beispiel. das ist genau das, was du suchst.

              PHP-Code:
              // status ausgeben.
              echo $hosts["127.0.0.1"]; 
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                schaue auch mal hier vorbei
                http://de.php.net/manual/de/ref.array.php
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Die Seite läuft schon seit 2 Stunden im Hintergrund und wird andauert zu Rate gezogen aber ich komm trotzdem nicht weiter.

                  Mfg Markus

                  Kommentar


                  • #10
                    Hab gerade das folgende Beipsiel ziemlich weit unten gefunden

                    If you want to use integer keys simply treat it as an 'ordinary' array.

                    $user_arr = array();

                    $user_id = 4;
                    $user_name = 'John';
                    $user_arr[$user_id] = $user_name;

                    $user_id = 346;
                    $user_name = 'Steve';
                    $user_arr[$user_id] = $user_name;

                    $user_id = 652;
                    $user_name = 'Maria';
                    $user_arr[$user_id] = $user_name;

                    All slots in between the three user IDs will not be allocated and sizeof($user_arr) will return 3 and not 653.

                    kann ich des jetzt so machen wie du es gamcht hast?
                    Aber wo gehört der Code Schnipsel hin?
                    $hosts[$servername] = $status;

                    Jetzt wird $status dem $servername zugeordnet

                    Gibst du hier dem Array Element mit Id Namen aber wie kann ich dann drauf zugreifen und wo gehört des hin?
                    $hosts[] = array("name" => $servername, "stat" => $status);
                    Ich denk mal das wäre dann an folgender stelle
                    PHP-Code:
                    global $servername$port;
                    static 
                    $hosts[] = array("name" => $servername"stat" => $status);
                    if (
                    in_array("$servername"$hosts)) 
                    Und wie füge ich dann an das Array an bzw gestalte ich mein Suche so das er mir
                    PHP-Code:
                        if ($status in_array("$servername"$hosts(name)))  //geht das mit name oder macht es das Automatisch
                        
                    {
                            return 
                    $status;  // Bekomm ich jetzt die Ip oder den Status zurück?
                        

                    Ich weiß es sind viele Fragen aber ich denk mal das wird mein Problem komplett lösen!

                    Mfg Markus

                    Kommentar


                    • #11
                      ich weiss jetzt nicht, was du mit deinen codezeilen machst,
                      aber ich würde mal sagen, dass es so geht.

                      hier drei beispiele.
                      PHP-Code:
                      // neuen server incl status in das array aufnehmen.
                      $hosts[$servername] = $status;

                      // prüfen ob server enhalten ist
                      if (isset($hosts[$servername]))
                      {
                          echo 
                      "status vorhanden";
                      }
                      else
                      {
                          echo 
                      "status NICHT vorhanden";
                      }

                      // rückgabe des status
                      echo $hosts[$servername]); 
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        OK geschnallt und funktioniert.
                        Jetzt hab ich noch eine Frage:

                        Meine Ausgabe sieht so aus

                        Pfad: Verzeichnis:

                        ftp://***//E:/FTP Server/--==[Upload]==--
                        Upload

                        ***Dies darf nur einmal ausgegeben werdenkonnte nicht Verbinden
                        ftp://***//E:/FTP Server/--==[Upload]==-- Upload
                        ftp://***//E:/FTP Server/--==[Upload]==--/--==[stuff]==--
                        Grothmann Java-Kurs

                        ftp://***//E:/FTP Server/--==[Upload]==--/--==[stuff]==-- /Java-Kurs
                        ftp://***//E:/FTP Server/--==[Upload]==--/--==[stuff]==--
                        Aufgabe6

                        ftp://***//E:/FTP Server/--==[Upload]==--/--==[stuff]==-- Aufgabe6
                        ftp://***//E:/FTP Server/--==[Upload]==--
                        --==[aps]==--

                        ...

                        Wieso wird mir
                        "***Dies darf nur einmal ausgegeben werdenkonnte nicht Verbinden"
                        erst in der 2ten Ausgabe mit ausgegeben und nicht bei der ersten denn da wird ja schließlich die Ausgabe gemacht?

                        Funktionierender Code:
                        PHP-Code:
                        function onlinecheck($servername)
                        {
                            global 
                        $servername$port;
                            static 
                        $hosts;
                            
                        $hosts[] = array("name" => $servername"stat" => $status);
                            if (isset(
                        $hosts[$servername]))
                            {
                                
                        $status $hosts[$servername];
                            }
                            else
                            {
                                echo 
                        $servername$port;
                                echo 
                        "Dies darf nur einmal ausgegeben werden";
                                
                        $verbunden = @ftp_connect($servername$port);
                                if (
                        $verbunden)
                                {
                                    echo 
                        "konnte Verbinden";
                                    
                        $status 1;
                                    
                        $hosts[$servername] = $status;
                                }
                                else
                                {
                                    echo 
                        "konnte nicht Verbinden";
                                    
                        $status 0;
                                    
                        $hosts[$servername] = $status;
                                }
                            }
                            return 
                        $status;

                        Fettes Danke für die Hilfe

                        Mfg Markus
                        Zuletzt geändert von markusschmitt; 15.04.2003, 21:57.

                        Kommentar


                        • #13
                          wahrscheinlich deswegen
                          PHP-Code:
                          $hosts[] = array("name" => $servername"stat" => $status);
                          if (isset(
                          $hosts[$servername])) 
                          hier hast du noch code aus meinem 1. beispiel drin, obwohl eigentlich alles mit beispiel 2 gelöst werden solle.
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            OK Danke,
                            es läuft

                            Mfg Markus

                            Kommentar

                            Lädt...
                            X