Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

$array=[] virker på een maskine, ikke på en anden.

2 views
Skip to first unread message

Leif Neland

unread,
Jan 6, 2013, 5:49:47 PM1/6/13
to
Jeg vil lave et tomt array.

function Select($fields,$table,$limits="")
{
global $params;
$params=[];

Det virker på min laptop med wamp og php 5.4

Men de samme filer, synkroniseret med git, giver fejl på
linux-serveren, med php 5.3.
"Parse error: syntax error, unexpected '[' "

Hvorfor i alverden dog denne forskel?

Leif


--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Bertel Lund Hansen

unread,
Jan 6, 2013, 5:58:08 PM1/6/13
to
Leif Neland skrev:

> Jeg vil lave et tomt array.

Det laves s�ledes:

$params = array();

Jeg aner ikke hvorfor det andet (tilsyneladende) har virket.

--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/

scootergrisen

unread,
Jan 6, 2013, 5:57:29 PM1/6/13
to
Tomt array laves med :

$test = array();

Leif Neland

unread,
Jan 6, 2013, 6:17:23 PM1/6/13
to
Bertel Lund Hansen formulerede spørgsmålet:
> Leif Neland skrev:
>
>> Jeg vil lave et tomt array.
>
> Det laves således:
>
> $params = array();
>
> Jeg aner ikke hvorfor det andet (tilsyneladende) har virket.

Det er meget mystisk.

Sætter jeg den linie ind, dumper serveren core og dør.
Fjerner jeg den helt, kører det, men ikke efter hensigten.

Leif Neland

unread,
Jan 6, 2013, 6:31:38 PM1/6/13
to
Leif Neland:
> Bertel Lund Hansen formulerede spᅵrgsmᅵlet:
>> Leif Neland skrev:
>>
>>> Jeg vil lave et tomt array.
>>
>> Det laves sᅵledes:
>>
>> $params = array();
>>
>> Jeg aner ikke hvorfor det andet (tilsyneladende) har virket.
>
> Det er meget mystisk.
>
> Sᅵtter jeg den linie ind, dumper serveren core og dᅵr.
> Fjerner jeg den helt, kᅵrer det, men ikke efter hensigten.
>
> Leif

Lidt mere af koden:

<?php

class dbms
{
...
private $params;

function dbms()
{
...
}
function Select($fields,$table,$limits="")
{
global $params;
$params=[];
...
}
private function addparam($p)
{
global $params;
$v="var_".count($params);
$params[$v]=$p;
return $v;
}

Det virkede en enkelt gang, da jeg omdᅵbte $param til noget fjollet.
Sᅵ omdᅵbte jeg til noget mindre fjollet, og det virkede ikke.
Sᅵ omdᅵbte jeg igen til detsamme fjollede. og det virker stadig ikke?!?

--
Husk kᅵrelys bagpᅵ, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Leif Neland

unread,
Jan 6, 2013, 7:16:37 PM1/6/13
to
Leif Neland frembragte:
>
> Det er meget mystisk.
>
> Sᅵtter jeg den linie ind, dumper serveren core og dᅵr.
> Fjerner jeg den helt, kᅵrer det, men ikke efter hensigten.
>
Fejlen fundet.

Med linien inde, kᅵrer det efter hensigen, men der hentes en
MONEY-variabel fra databasen, og det dᅵr linux/php5.3 pᅵ, men det gᅵr
win/php5.4 ikke pᅵ.

Linux-serveren kᅵrer debian stable, hvor den seneste php er
5.3.3-7+squeeze14

Jeg vil helst ikke til at kompilere en nyere php selv.

Leif

--
Husk kᅵrelys bagpᅵ, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Mads Lie Jensen

unread,
Jan 7, 2013, 1:41:18 AM1/7/13
to

Fik i fᅵrste omgang kun sendt svaret direkte til Leif - undskyld! Det
var ikke meningen.

> Jeg vil lave et tomt array.
>
> function Select($fields,$table,$limits="")
> {
> global $params;
> $params=[];
>
> Det virker pᅵ min laptop med wamp og php 5.4
>
> Men de samme filer, synkroniseret med git, giver fejl pᅵ linux-serveren,
> med php 5.3.
> "Parse error: syntax error, unexpected '[' "
>
> Hvorfor i alverden dog denne forskel?

Sᅵ ganske enkelt fordi den syntax til tomme arrays fᅵrst er blevet
tilfᅵjet i php 5.4

Skal du lave en tom array pᅵ en php ᅵldre end 5.4 sᅵ brug $var = array()
som andre allerede har skrevet.


Bertel Lund Hansen

unread,
Jan 7, 2013, 5:29:51 AM1/7/13
to
Mads Lie Jensen skrev:

>> $params=[];

>> Hvorfor i alverden dog denne forskel?

> Så ganske enkelt fordi den syntax til tomme arrays først er blevet
> tilføjet i php 5.4

Hvorfor lave om på noget der virker?

scootergrisen

unread,
Jan 7, 2013, 5:46:11 AM1/7/13
to
>> S� ganske enkelt fordi den syntax til tomme arrays f�rst er blevet
>> tilf�jet i php 5.4
>
> Hvorfor lave om p� noget der virker?

Det virker ikke i din PHP han bruger.

Martin

unread,
Jan 7, 2013, 8:28:16 AM1/7/13
to
On 06-01-2013 23:49, Leif Neland wrote:
> Jeg vil lave et tomt array.
>
> function Select($fields,$table,$limits="")
> {
> global $params;
> $params=[];

i PHP 5.4 kan man lave arrays med
$params = [];

Hvor før 5.4
skal man bruge $params = array();

(ganske som i javascript verdenen)

Andre nyheder i PHP 5.4 er at man nu kan fange array outputtet direkte
fra metoden

function foo() {
return array(10,20,30);
}

foo()[0] // 1
foo()[1] // 2

> Det virker på min laptop med wamp og php 5.4

Nemlig, for sådan laver man arrays i 5.4 :)

>
> Men de samme filer, synkroniseret med git, giver fejl på linux-serveren,
> med php 5.3.
> "Parse error: syntax error, unexpected '[' "

Jeps, som sagt først i 5.4 kan det bruges

Jørn Andersen

unread,
Jan 7, 2013, 8:40:37 AM1/7/13
to
On Mon, 7 Jan 2013 11:29:51 +0100, Bertel Lund Hansen
<kanon...@lundhansen.dk> wrote:

>Mads Lie Jensen skrev:
>
>>> $params=[];
>
>>> Hvorfor i alverden dog denne forskel?
>
>> Så ganske enkelt fordi den syntax til tomme arrays først er blevet
>> tilføjet i php 5.4
>
>Hvorfor lave om på noget der virker?

Jeg tror, man kalder det "kort notation", og det er ganske rigtigt nyt
i PHP 5.4, men kendes fra andre sprog.

Noget andet nyt i PHP 5.4 er muligheden for at adressere indholdet i
et array, der er skabt af en funktion, direkte fra funktions-navnet.

Hvis fx getArray() returnerer et array, så skulle man hidtil skrive:
$myArray = getArray();
echo $myArray[0];

Nu kan man blot skrive:
echo getArray()[0];

Der er sådan set ikke "lavet om på noget der virker" - der er bare nye
muligheder for kortere kode.

Mvh. Jørn

--
Jørn Andersen
http://socialister.dk
http://marxisme.dk

Bertel Lund Hansen

unread,
Jan 7, 2013, 9:27:11 AM1/7/13
to
Jørn Andersen skrev:

> Der er sådan set ikke "lavet om på noget der virker" - der er bare nye
> muligheder for kortere kode.

Man har droppet bagudkompatibiliteten uden synderlig grund.

J�rn Andersen

unread,
Jan 7, 2013, 9:49:13 AM1/7/13
to
On Mon, 7 Jan 2013 15:27:11 +0100, Bertel Lund Hansen
<kanon...@lundhansen.dk> wrote:

>J�rn Andersen skrev:
>
>> Der er s�dan set ikke "lavet om p� noget der virker" - der er bare nye
>> muligheder for kortere kode.
>
>Man har droppet bagudkompatibiliteten uden synderlig grund.

Du kan stadig skrive som du har gjort hidtil - og det vil de fleste
g�re i lang tid endnu. Men kortere kode er vel en ok grund - ?

PS: Magic quotes, safe mode og register globals er heller ikke
kompatible med moderne PHP ...

Mvh. J�rn

--
J�rn Andersen
http://socialister.dk
http://marxisme.dk

Bertel Lund Hansen

unread,
Jan 7, 2013, 12:09:20 PM1/7/13
to
Jørn Andersen skrev:

> PS: Magic quotes, safe mode og register globals er heller ikke
> kompatible med moderne PHP ...

Safe mode siger mig ikke noget. Det er en klar forbedring at
register globals er blevet fjernet.

Men PHP er og bliver et rodet sprog.

scootergrisen

unread,
Jan 7, 2013, 12:15:04 PM1/7/13
to
> Men PHP er og bliver et rodet sprog.

Hvorfor ?

Jeg er nu godt tilfreds.

J�rn Andersen

unread,
Jan 9, 2013, 2:20:56 PM1/9/13
to
On Mon, 7 Jan 2013 18:09:20 +0100, Bertel Lund Hansen
<kanon...@lundhansen.dk> wrote:

>Men PHP er og bliver et rodet sprog.

Helt enig.
Fx er det tydeligt, at der har v�ret en periode i PHP's udvikling,
hvor holdningen har v�ret: Der er 3, der siger, de mangler en funktion
- ergo laver vi en ny funktion ;-)

Mit indtryk er dog (som ret ny PHP'er) at der er lidt mere struktur -
og objekt-orientering - p� udviklingen i dag.

Bertel Lund Hansen

unread,
Jan 9, 2013, 5:00:20 PM1/9/13
to
J�rn Andersen skrev:

>>Men PHP er og bliver et rodet sprog.

> Helt enig.
> Fx er det tydeligt, at der har v�ret en periode i PHP's udvikling,
> hvor holdningen har v�ret: Der er 3, der siger, de mangler en funktion
> - ergo laver vi en ny funktion ;-)

Ja, og den fjerde bad om at r�kkef�lgen af parametrene skulle
v�re anderledes end i den foreg�ende funktion.

Anders Wegge Keller

unread,
Jan 9, 2013, 3:28:30 PM1/9/13
to
scootergrisen <NEJ...@TILSPAM.DK> writes:

> > Men PHP er og bliver et rodet sprog.
>
> Hvorfor ?

Det er en rodebunke af ad-hoc funktioner, der er kastet ind, uden at
tænke på et konsistent interface. Sproget er typesvagt, så man ender
ud i absurditeter, hvor (0 == "et0") er sandt, mens (0 == "1nul") er
falsk. Jeg har sågar set situationer hvor === heller ikke er nok.

Der er mange andre, der har samme mening, der har beskrevet
begrædelighederne i langt bedre grad, end jeg orker. Start eksempelvis
her: <http://webonastick.com/php.html>

--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*
0 new messages