php basic hjälp

Tråden skapades och har fått 13 svar. Det senaste inlägget skrevs .
1

Jag vill testa lite php och har fastnat. Säkert mycket enkelt men .....
Jag försöker:
<?php
$temp = <<< Stop
Tom
Kulan
Douglas
Zorro
Bull
Stop;
echo $temp;
?>
Men sidan laddar inte. Något är fel.
Jag har tittat i "Programming PHP " av R.Lerdorf & K.Tatroe O'Reilly förlag och försöker enligt deras anvisningar att använda "heredoc".
Måste jag in i inställningen av php för att "slå på" användandet av heredoc.
--
Olof Svensson

--
A hard-on doesn't count as personal growth.

heredoc

Hej
Jag har testat det, inget resultat.
Min bok påpekar
"a space after the <<< and before the identifier."
Så det är nog något annat.
Jag har mer php kod på sidan som fungerar fram till mitt försök med heredoc.
Därför tror jag att felet ligger där.
--
Olof Svensson

------
Condense soup, not books!

  • Medlem
  • Stockholm
  • 2004-06-22 14:52

Exakt den koden fungerar för mig (med och utan space). Du råkar inte ha fått med något tecken efter ditt "Stop;" som ställer till det? Det får inte vara något som helst extra där, bara ett semikolon och en radbrytning. Det kan strula om du inte har sparat filen med rätt teckenkodning, t.ex. om du kör på en UNIX-server så ska radbrytningen vara "\n", på Mac brukar det vara "\r" och på ett annat system brukar det vara både och.

Som jag fattar det efter ha läst på php.net
Så ska det se ut:
$temp <<<TEST
1
2
3
4
TEST;

Väldigt viktigt är det med att vara säker på att du får en radbrytning mellan sista värdet och den avlustade raden.
Tyvärr har jag inte möjlighet att testa detta själv just nu.

Mattias.
Jag tog och kopierade in dina kodrader la till "echo $temp; och gjorde ett nytt php-doc. Placerade det i min php-mapp så att jag kan använda Apache servern i MAC OS X 2.8. öppnar Safari och skriver:
http://127.0.0.1/~moof/php/TEST.php.
Det här fungerar med andra php-doc men inte nu!!

Ursprungligen av Mattias Hedman:

Som jag fattar det efter ha läst på php.net
Så ska det se ut:
$temp <<<TEST
1
2
3
4
TEST;

Väldigt viktigt är det med att vara säker på att du får en radbrytning mellan sista värdet och den avlustade raden.
Tyvärr har jag inte möjlighet att testa detta själv just nu.

peterj
Jag har sparat det ny documentet som UNIX och charset=utf-8
PHP-doc har:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict...">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="se" lang="se">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Något fel där?
--
Olof Svensson

--------
Living poor is best left to those with no money.

Om du skapar ett tomt dokument med bara:
<?
$temp <<<TEST
1
2
3
4
TEST;
echo $temp;
?>

Inget annat? Funkar inget då heller?

Och alla kör PHP4 hoppas jag...

Ursprungligen av Mattias Hedman:

Om du skapar ett tomt dokument med bara:
<?
$temp <<<TEST
1
2
3
4
TEST;
echo $temp;
?>

Inget annat? Funkar inget då heller?

Och alla kör PHP4 hoppas jag...

Nada och jag har PHP Version 4.3.4

--
Olof Svensson

-------
Never moon a werewolf.

  • Medlem
  • Stockholm
  • 2004-06-22 17:08

Det ska vara ett "=" före "<<<" om man vill göra en variabeltilldelning med heredoc:en, några av exemplen ovan är fel där (originalkoden är dock rätt). Så här ska det se ut:

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
echo $str;
?>

Om du provar att skapa en ny fil med _enbart_ detta, funkar det då? Om inte, vad visar din webbservers loggar?

Tack till Alla

Ursprungligen av peterj:

Det ska vara ett "=" före "<<<" om man vill göra en variabeltilldelning med heredoc:en, några av exemplen ovan är fel där (originalkoden är dock rätt). Så här ska det se ut:

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
echo $str;
?>

Om du provar att skapa en ny fil med _enbart_ detta, funkar det då? Om inte, vad visar din webbservers loggar?

Nu funkar det och jag vet inte vad som var fel. Som jag ser det var min ursprungliga kod
som det sista ex. Men jag ska inte klaga utan bara Tacka för hjälpen.
--
Olof Svensson

---------
Old MacDonald was dislexic... OIEIE...

  • Medlem
  • Stockholm
  • 2004-06-22 20:03

Det hade förmodligen smugit sig in ett blanktecken eller liknande av något slag som du inte såg med blotta ögat. Vid sådana tillfällen är det bra att köra en editor som kan markera var radbrytningar och liknande finns. Men bra att du fick det att fungera till slut

~peter

hahaha jag glömde ett = hur vanligt är inte det att glöma ett sådant tecken som är så självklart.
Hur ska jag annars kunna deklarera en variabel utan =?
Vanligast är nog att glömma { eller } eller ;
Dessa små buggar kan man få leta ihjäl sig efter... lika bra att lämna koden till någon annan då.

  • Medlem
  • Stockholm
  • 2004-06-23 08:00
Ursprungligen av Mattias Hedman:

hahaha jag glömde ett = hur vanligt är inte det att glöma ett sådant tecken som är så självklart.
Hur ska jag annars kunna deklarera en variabel utan =?
Vanligast är nog att glömma { eller } eller ;
Dessa små buggar kan man få leta ihjäl sig efter... lika bra att lämna koden till någon annan då.

Sant men ofta brukar man få rätt hyffsade felmeddelanden av sådana misstag tycker jag, det brukar inte vara _helt_ omöjligt att lokalisera felaktigheter av det slaget iaf eftersom de oftast är rena syntaxfel. Värre då med logiska fel eller att hitta ett villkor där man istället för en jämförelse råkat göra en tilldelning till exempel.

Jag brukar alltid skruva upp felrapporteringsnivån i mina utvecklingsmiljöer så att i princip alla varningar osv. rapporteras. Sen i produktion ändrar jag så att bara rena fel resulterar i felutskrifter.

~peter

Jo precis. Men dessa rena syntaxfel brukar komma sist av allt, när du är så trött på koden att du inte bara orkar ta hand om sådant. Felmeddelandena har blivit vansinnigt mycket bättre på senare tid i PHP.

1
Bevaka tråden