---
title: "Synnerligen skumt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/108562-synnerligen-skumt"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2004-08-05T15:17:38.000Z"
updated: "2004-08-05T19:56:27.000Z"
replies: 8
views: 266
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/108562-synnerligen-skumt"
---

# Synnerligen skumt

## #1 — aasah, 2004-08-05T15:17Z

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

Permalänk: https://www.webforum.nu/p/108562

## #2 — Matte, 2004-08-05T17:26Z

Har du display_errors = On i din php.ini ?

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

Permalänk: https://www.webforum.nu/p/1402420

## #3 — aasah, 2004-08-05T18:30Z

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

Permalänk: https://www.webforum.nu/p/1402455

## #4 — Gislaved.net, 2004-08-05T18:37Z

Använder du 

```php
checkCorrectForm(&$quiz)
```

 Borde det inte vara 

```php
checkCorrectForm($quiz)
```

Permalänk: https://www.webforum.nu/p/1402461

## #5 — aasah, 2004-08-05T18:43Z

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....

Permalänk: https://www.webforum.nu/p/1402464

## #6 — aasah, 2004-08-05T18:55Z

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

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

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

Permalänk: https://www.webforum.nu/p/1402475

## #7 — aasah, 2004-08-05T19:39Z

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

```php
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å):

```php
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...

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

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

Permalänk: https://www.webforum.nu/p/1402497

## #8 — Matte, 2004-08-05T19:48Z

Jag tror problemet ligger här:

```php
function printParseError(&$errorStr) {
```

 
i kombination med

```php
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:

```php
function printParseError($errorStr) {
```

Permalänk: https://www.webforum.nu/p/1402505

## #9 — aasah, 2004-08-05T19:56Z

Korrekt! TACK!!! :D :birp

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

Permalänk: https://www.webforum.nu/p/1402509

---

Tråden på webben: https://www.webforum.nu/amne/php/108562-synnerligen-skumt
