webForumDet fria alternativet

Synnerligen skumt

8 svar · 262 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Ursäkta rubriken, men jag vet inte hur jag kortfattat nog för en rubrik ska sammanfatta detta?

Jag har ett skript som läser en textfil och stoppar in valda delar i en array på ett bestämt sätt. När den är klar skriver den ut innehållet i arrayen. Funkar galant och ser bra ut! :)

Avsikten är att lägga in infon från arrayen i en databas så småningom och jag vill därför ha en funktion som kollar av (åtminstone vissa) syntaktiska saker i min array. Jag skriver en sådan funktion. Laddar upp och kör. Och resultatet är minst sagt förbryllande.... (i alla fall för mig). :q

Så länge min nya funktion checkCorrectForm(&$quiz) och anropet till den är avkommenterade funkar allt som tidigare. :) (Hjälpfunktionen till checkCorrectForm är inte avkommenterad, så något nytt funkar så långt.... )

Men, om jag avkommenterar funktionen själv, men inte anropet händer ingenting!!! (Dvs definitionen syns i koden, men den körs inte.) Den HTML som nu skickas till servern ser plötsligt ut så här:

HTML från servern skrev:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>

Inga felmeddelanden, varningar eller annat matnyttigt och felsökarvänligt.... bara ingen utskrift!!! Och jag har error_reporting(E_ALL) näst högst upp i filen. (En include-sats före bara.)

Vad har hänt??? :q

MatteMedlem sedan aug. 20002 975 inlägg
#2

Har du display_errors = On i din php.ini ?

Om du inte har det så kommer ett parse error att ge detta resultat.

aasahMedlem sedan mars 20034 471 inlägg
#3

Ja, och jag brukar få parse errors, som skrivs ut också. Men... jag såg:

phpinfo skrev:

display_errors On On
display_startup_errors Off Off

Kan det generera ett startup_error??? :q

Gislaved.netMedlem sedan juni 20001 521 inlägg
#4

Använder du

checkCorrectForm(&$quiz)

Borde det inte vara

checkCorrectForm($quiz)
aasahMedlem sedan mars 20034 471 inlägg
#5

Kanske... fast jag förstår inte varför i så fall. $quiz är en 3-dimensionell array med en hel del strängar i. Jag begriper inte varför PHP ska behöva kopiera hela rubbet bara för att kunna kolla att de olika subarrayerna har rätt längd?

En definition med &$quiz borde ju innebära att värdet ej kopieras, och varför den inte skulle gilla det just där begriper jag inte... Jag sparar ju jobb åt den....

aasahMedlem sedan mars 20034 471 inlägg
#6

Tror att jag lyckats lokalisera felet! Men jag fattar ingenting...

   if (!is_array($quiz)) printParseError("Fel i a) 1");

När denna rad avkommenteras uppstår felet. Men varför??? :q :q

aasahMedlem sedan mars 20034 471 inlägg
#7

Med två extra debuggrader i koden ser det ändå mer konstigt ut (de två sista).... Följande funkar utmärkt.

function checkCorrectForm(&$quiz) {
   $checkF = array();
   //if (!is_array($quiz)) printParseError("Fel i a) 1");
   if (is_array($quiz)) echo "är array<BR>";
   if (!is_array($quiz)) echo "fel är ingen array";
   /* ....*/
}

Vid anrop av funktionen kommer alla gamla utskrifter ut, allt är fint, sist står det

är array

Men... så avkommenterar jag den ursprungliga raden (alltså):

function checkCorrectForm(&$quiz) {
   $checkF = array();
   if (!is_array($quiz)) printParseError("Fel i a) 1");
   if (is_array($quiz)) echo "är array<BR>";
   if (!is_array($quiz)) echo "fel är ingen array";
   /* ... */
}

Och vips genereras en tom sida... :x Har försökt byta namn på printParseError, hjälpte inte...

function printParseError(&$errorStr) {
   echo "ParseError i quizfilen: $errorStr";
   exit();
}

Jag ser absolut ingen skillnad på det som funkar och det som inte funkar.... :x

MatteMedlem sedan aug. 20002 975 inlägg
#8

Jag tror problemet ligger här:

function printParseError(&$errorStr) {

i kombination med

if (!is_array($quiz)) printParseError("Fel i a) 1");

Det är en sträng du skickar in i funktionen printParseError(), alltså finns där ingen variabel du kan referera till.

Det borde funka om du skriver:

function printParseError($errorStr) {
aasahMedlem sedan mars 20034 471 inlägg
#9

Korrekt! TACK!!! :D :birp

Och extra tack för förklaringen! :D

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)