Seite 1 von 1

multidimensionales array

Verfasst: 31.10.2005 18:53
von AmShaegar
hallo,
ein freund und ich sind gerade dabei etwas zu programmieren. nun wollten wir uns die ewigen sql-strings sparen und eine funktion schreiben, die die angegebenen felder abfragt und in einem multidimensionalen array speichert.. nur ist da immer dieser dumme fehler:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\apache\htdocs\spiel\trunk\test.php on line 29
die funktion haben wir erst einmal direkt eingebaut in den code um mögliche fehler beim benuzten der funktion auszuschließen... hier der besagt teil:

Code: Alles auswählen

$fields = "name,size";
$loop = array();
$uid = $_SESSION['uid'];
$SELECT = "SELECT $fields FROM ".ISLES." WHERE uid LIKE '$uid'";
$query = mysql_query($SELECT);
$fields = explode(",", $fields);
$fields_count = array_count_values($fields);
$j = 0;
while($res = mysql_fetch_object($query))
  {
  $loop[$j] = array();
  for($i=0;$i<$fields_count;$i++) {
    $loop[$j][$i] = $res->$fields[$i];       // Zeile 29
    }
  $j++;
  }
nun die frage: wie kommt das ganze zu stande? warum dieser fehler und warum in zeile 29?

Verfasst: 01.11.2005 01:51
von QCO
Also den Fehler hättest du ohne Probleme selbst finden können, indem du dir mit echo einfach mal ein paar Werte von Variablen hättest ausgeben lassen.

Allein die Tatsache, dass er in der Zeile 29 festhängt, stößt dich schon mit der Nase darauf, dass mit deiner for-Schleife was nicht stimmt.
Die läuft, solange $i kleiner als $dields_count ist. Also stimmt etwas nicht mit $fields_count oder dem Vergleich.
echo $fields_count liefert Array. Und genau das ist der Fehler...
array_count_values() gibt ein Array zurück.
count() heisst die Funktion, die wohl deinen Zweck erfüllt.

Verfasst: 01.11.2005 14:33
von AmShaegar
vielen dank! dass der fehler so früh liegen könnte hätte ich nicht gedacht.... hätte mir aber wirklich auffallen können, ich den befehl array_count_values() auch noch nie benutzt hatte.. ich wollte das eigentlcich nur ausprobieren und habs dann wohl irgendwie als selbstverständlich angesehen, dass das geht...

also vielen dank nochmal. ich werde wohl aufmerksamer sein müssen in zukunft ;-)