Michael W.: kleiner fehler ?

hallo,

kann mir mal einer zeigen wo in dem folgenden script der fehler liegt:

---------------

<?php
$verzeichnis = './server';
if($verzeichnis."/".$datei)
{
$dir=opendir($verzeichnis);
while ($file = readdir ($dir))
if (!is_dir($datei))
{
$files[] = $file;
}
closedir($dir);
if (is_array($files))
{
foreach($files as $handle)
{
$datei = file($verzeichnis."/".$handle);
print "<br><hr><I><b>Server:<U>".$handle."</b></I></U><hr><br>";
$a = "USER=";
$b = " Processor: ";
$c = " CPU Clock Speed: ";
$d = " Extended Memory: ";
$e = "Fixed Disk";

for($i=0;$i<count($datei);$i++)
{
if(eregi($b,$datei[$i])) $array[0][] = $datei[$i];
if(eregi($a,$datei[$i])) $array[1][] = $datei[$i];
if(eregi($e,$datei[$i])) $array[4][] = $datei[$i];
if(eregi($d,$datei[$i])) $array[3][] = $datei[$i];
if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
}
while(list($key,$val)=each($array[0]))
{
print "<b>";
echo $array[1][$key];
print "</b><br><br>";
echo $val;
print "<br>";
echo $array[2][$key];
print "<br>";
echo $array[3][$key];
print "<br>";
echo $array[4][$key];
print "<br><hr>";
}
print "<br><br>";
}
}
}
?>

-------------------

die ausgabe ergibt zuerst 2 fehlermeldungen:

Server:.

Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 32

Server:..

Warning: Variable passed to each() is not an array or object in /usr/local/httpd/htdocs/rwzadm/menu/support/hardware/rwz-check.php on line 32

und dann die gewünschte ausgabe. wie bekomme ich die 2 fehler weg ?
line 32 bzw each() ist diese zeile hier:
------------
if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
}

--> while(list($key,$val)=each($array[0]))

{
print "<b>";
------------

was ist da falsch dran ?

Danke für eure hilfe

  1. Huten morgen!
    [..]

    --> while(list($key,$val)=each($array[0]))

    Du versuchst each() auf ein Element eines Arrays anzuwenden -> each funktioniert aber nur mit Arrays...

    Gruss Sven

    1. Huten morgen!
      [..]

      --> while(list($key,$val)=each($array[0]))
      Du versuchst each() auf ein Element eines Arrays anzuwenden -> each funktioniert aber nur mit Arrays...

      und wie bekomme ich den fehler jetzt weg ?

      1. Huten morgen!
        [..]

        --> while(list($key,$val)=each($array[0]))
        Du versuchst each() auf ein Element eines Arrays anzuwenden -> each funktioniert aber nur mit Arrays...
        und wie bekomme ich den fehler jetzt weg ?´

        schreibst du deinen kram selbst oder kopierst du nur?
        ein bisserl solltest du php schon beherrschen und dir nicht alles auf einem tablett servieren lassen....

        gruss
        horst

        1. schreibst du deinen kram selbst oder kopierst du nur?
          ein bisserl solltest du php schon beherrschen und dir nicht alles auf einem tablett servieren lassen....

          wenn ein fehler für mich neu ist, dann brauche ich einfach hilfe, wenn ich ihn nicht selber weg bekomme. ich habe schon viel php gelernt, aber ich kann mir doch nichts aus den fingern saugen und diese php-doku-seiten sind dermasen komisch (kann ich jetzt nicht wieter beschreiben), dass ich keine lust habe mich für ein kleines problem stunden lang zu beschäftigen; lieber lerne ich was bei einer diskussion im forum dabei; ob es sinnvoll ist es oder so zu machen, warum der fehler so zu beheben geht, und und und. Das ist doch der Sinn einer diskussion, oder nicht? klar muss man eigeninitative ergreifen können, aber wenn man das schon probiert hat und sich mit einem fachbegriff noch nicht so gut auskennt, da man keine alternativen bisher eingesetzt hat, dann geht das einfach nicht anders.

          schönen gruß
          Michael W.

          1. ALTER !

            er hat es dir doch schon auf dem silbertablett präsentiert !

            er sagte each darf man nicht auf array-elemente anwenden, nur auf arrays also mach halt dieses blöde $array[0] zu $array !!!

            sorry aber wenn man alles vorkaut lernst du nix, und wenn du ernsthaft PHP oder eine andere sprache lernen willst dann brauchst du halt nich nur die doku sondern auch n paar bücher !

            mfg

            Korbinian Bachl

            1. er sagte each darf man nicht auf array-elemente anwenden, nur auf arrays also mach halt dieses blöde $array[0] zu $array

              achso - ohh man - klar jetzt machts klick

              sorry aber wenn man alles vorkaut lernst du nix, und wenn du ernsthaft PHP oder eine andere sprache lernen willst dann brauchst du halt nich nur die doku sondern auch n paar bücher !

              das bekomme ich demnächst.

              mfg

              Korbinian Bachl

              danke

            2. hallo nochmal,

              das hat nicht funktioniert.
              gibt es die möglichkeit die fehler zu unterdrücken ?
              denn die ausgabe erscheint nach den 2 fehler so wie ich sie will und wenn ich aus $array[0] $array mache bekomme ich mehr fehler wie vorher.

              muss denn die schleife dann auch angepasst werden ?:
              ----------------------

              <?php
              $verzeichnis = './server';
              if($verzeichnis."/".$datei)
              {
              $dir=opendir($verzeichnis);
              while ($file = readdir ($dir))
              if (!is_dir($datei))
              {
              $files[] = $file;
              }
              closedir($dir);
              if (is_array($files))
              {
              foreach($files as $handle)
              {
              $datei = file($verzeichnis."/".$handle);
              print "<br><hr><I><b>Server:<U>".$handle."</b></I></U><hr><br>";
              $a = "USER=";
              $b = " Processor: ";
              $c = " CPU Clock Speed: ";
              $d = " Extended Memory: ";
              $e = "Fixed Disk";

              for($i=0;$i<count($datei);$i++)
              {
              if(eregi($b,$datei[$i])) $array[0][] = $datei[$i];
              if(eregi($a,$datei[$i])) $array[1][] = $datei[$i];
              if(eregi($e,$datei[$i])) $array[4][] = $datei[$i];
              if(eregi($d,$datei[$i])) $array[3][] = $datei[$i];
              if(eregi($c,$datei[$i])) $array[2][] = $datei[$i];
              }
              while(list($key,$val)=each($array))
              {
              print "<b>";
              echo $array[1][$key];
              print "</b><br><br>";
              echo $val;
              print "<br>";
              echo $array[2][$key];
              print "<br>";
              echo $array[3][$key];
              print "<br>";
              echo $array[4][$key];
              print "<br><hr>";
              }
              print "<br><br>";
              }
              }
              }

              -----------------------------

              ??

              du sagtest jetzt aber dass man arrays nicht auf each beziehen darf.
              $array ist doch auch ein array genau wie $array[], oder missverstehe ich da was ? und ausserdem muss ich doch die schleife auf array[0] beziehen da sonst der rest nicht mehr stimmt ...

              ??

              Danke

              1. du sagtest jetzt aber dass man arrays nicht auf each beziehen darf.
                $array ist doch auch ein array genau wie $array[], oder missverstehe ich da was ? und ausserdem muss ich doch die schleife auf array[0] beziehen da sonst der rest nicht mehr stimmt ...

                was er sagte war:

                "Du versuchst each() auf ein Element eines Arrays anzuwenden -> each funktioniert aber nur mit Arrays..."

                $array ist ein array, z.B. $array = ("hund","katze", "maus")
                hierauf darfst du ein each anwenden.. (für jedes element in array sag miau)

                $array[0] ist EIN element (EIN teil) des arrays. hierauf each (jedes) anzuwenden wäre unlogisch....

                oh.. ich sehe gerade das $array zweidimensional ist...
                $array[][].... vielleicht hängts daran

                was für fehler bekommst du denn?

                horst

                1. <?
                  // This is a small script that shows how to use an multiple array
                  for($x = 0;$x < 10;$x++){
                    for($y = 0;$y < 10;$y++){
                     $mat[$x][$y] = "$x,$y";
                    }
                  }

                  for($x = 0;$x < count($mat);$x++){
                    for($y = 0;$y < count($mat[$x]);$y++){ // HIER DAS IST WICHTIG FÜR DICH
                     echo "mat[$x][$y]: " .
                     $mat[$x][$y] . " ";
                    }
                    echo "\n";
                  }
                  ?>

                  musst du denn unbedingt zweidimenionale arrays benutzen???

                  horst

                  1. <?
                    // This is a small script that shows how to use an multiple array
                    for($x = 0;$x < 10;$x++){
                      for($y = 0;$y < 10;$y++){
                       $mat[$x][$y] = "$x,$y";
                      }
                    }

                    for($x = 0;$x < count($mat);$x++){
                      for($y = 0;$y < count($mat[$x]);$y++){ // HIER DAS IST WICHTIG FÜR DICH
                       echo "mat[$x][$y]: " .
                       $mat[$x][$y] . " ";
                      }
                      echo "\n";
                    }
                    ?>

                    ooh je - soviele x und y`s - da blickt man kaum durch :)

                    musst du denn unbedingt zweidimenionale arrays benutzen???

                    ja, schon, dass muss leider sein.

                    kannst du mir das hier oben evtl. mal erleutern ?

                    Mit freundlichen Grüssen
                    Michael Wölk

                    1. <?
                      for($x = 0;$x < 10;$x++){
                        for($y = 0;$y < 10;$y++){
                         $mat[$x][$y] = "$x,$y";
                        }
                      }

                      hier wird ein zweidimensionales array erstellt und gefüllt:
                      x ist in der ersten auf 0
                       geht jetzt in for von $y beginnt mit 0
                         setzt $mat[0][0] auf "0,0"
                       erhöht in for von $y um 1
                         setzt $mat[0][1] auf "0,1"
                       ....
                       erhöht in for von $y auf 9
                         setzt $mat[0][9] auf "0,9"
                      x wird jetzt auf 1 erhöht
                        geht jetzt in for von $y und beginnt wieder mit 0
                          setzt $mat[1][0] auf "1,0"

                      for($x = 0;$x < count($mat);$x++){
                        for($y = 0;$y < count($mat[$x]);$y++){
                         echo "mat[$x][$y]: " . $mat[$x][$y] . " ";
                        }
                        echo "\n";
                      }
                      ?>

                      hier das ganze jetzt rückwärts..

                      was mir bei deinem skript unklar ist:
                      was willst du eigentlich ausgeben? bzw was macht das skript

                      mail ruhig!

                      gruss

                      luca

          2. hallo,

            [...] diese php-doku-seiten sind dermasen komisch (kann ich jetzt nicht wieter beschreiben), dass ich keine lust habe mich für ein kleines problem stunden lang zu beschäftigen;

            die leute, die dir hier helfen können, haben anfangs wahrscheinlich genau das gemacht.
            sie haben die php-doku gelesen und sich stunden- und vielleicht tagelang mit kleinen problemen auseinandergesetzt.
            anders geht's eben nicht.

            daß viele dieser leute deine einstellung nicht unterstützen wollen, ist für mich nachvollziehbar.

            rtfm

            schönen gruß
            Michael W.

            lg
            MADU