[PHP] Array referentie in string *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pelleke
  • Registratie: Maart 2003
  • Laatst online: 08-11-2024

pelleke

Aut viam inveniam aut faciam

Topicstarter
Hallo

Ik wil van een array waarvan de velden worden geidentificeerd met een string de waarden opvragen, en er meteen een lege regel achter planten. Ik weet bij god neit hoe je dat in 1 regel moet proppen. Dit werkt wel:
code:
1
2
echo $row["test"]
echo "\n"


Doe ik het als volgt:
code:
1
echo "$row['test']\n"

leek me wel werkend, maar dat lustie niet. Andersom quoten werkt natuurlijk ook niet omdat dan de varname niet wordt geparsed. Is mijn werkende oplossing de enige, of kan het ook nog wel met een simpele regel?

Pelle.

[ Voor 6% gewijzigd door pelleke op 16-11-2003 20:49 ]


Acties:
  • 0 Henk 'm!

  • DR
  • Registratie: December 2000
  • Niet online

DR

PHP:
1
echo $row['test']."\n";

Acties:
  • 0 Henk 'm!

  • pelleke
  • Registratie: Maart 2003
  • Laatst online: 08-11-2024

pelleke

Aut viam inveniam aut faciam

Topicstarter
Met een . (punt) !. Sorry, was het vergeten. Dank je wel.

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Het zou ook inline moeten kunnen, watr meen ik sneller zal zijn:
PHP:
1
2
3
<?
echo "${row['test']}\n";
?>

Maak deze code maar eens en vergelijk hem met die met uit de voorgaande post, en loop hem 10000 keer, dan zou die van mij zover ik weet sneller moeten zijn, maar daarover zou chem bijvoorbeeld uitsluitsel kunnen geven, zover ik weet ;P

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
moet dat niet

PHP:
1
2
3
<?php
echo "{$row['test']}n";
?>

zijn?

Even getest net met
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function startTimer()
{
    global $startTime;
    list($usec, $sec) = explode(" ",microtime());  
    $startTime = ((float)$usec + (float)$sec);  
}
function stopTimer()
{
    global $startTime;
    list($usec, $sec) = explode(" ",microtime());  
    $endTime = ((float)$usec + (float)$sec);  

    return $endTime - $startTime;
}
startTimer ();
$blaat = "wie";
for ($i = 0;$i<100000;$i++)
{
    echo $blaat . "<BR />";
}
echo stopTimer();
?>


Uitslag: 9.2878550291061

en
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function startTimer()
{
    global $startTime;
    list($usec, $sec) = explode(" ",microtime());  
    $startTime = ((float)$usec + (float)$sec);  
}
function stopTimer()
{
    global $startTime;
    list($usec, $sec) = explode(" ",microtime());  
    $endTime = ((float)$usec + (float)$sec);  

    return $endTime - $startTime;
}
startTimer ();
$blaat = "wie";
for ($i = 0;$i<100000;$i++)
{
    echo "{$blaat}<BR />";
}
echo stopTimer();
?>

Uitslag: 7.300320982933

Lijkt me duidelijk dus :)

de timer komt uit [rml][ php] template parse time *[/rml]

[ Voor 101% gewijzigd door PrisonerOfPain op 16-11-2003 21:26 ]


Acties:
  • 0 Henk 'm!

  • Kresh
  • Registratie: Mei 2000
  • Laatst online: 04-09 22:23
[Mening] ik vind
PHP:
1
echo $row['name']."<br>";
een stuk duidelijker lezen dan
PHP:
1
echo "{$row['name']}<br>";

Tweede geval mag dan wel sneller zijn, maar dat is ook pas bij enorm veel iteraties. Wat mij betreft dus lekker concateren die 2 strings in plaats van het geforceerd inline doen..

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

wat jammer is is de manier waarop jullie mijn code uit zijn verband halen ;)
Als je array elementen in een string gebruikt moeten de accolades na het dollar teken staan ;) Dit geld niet voor normale variablen, waar de accolades geheel niet nodig zijn, een test met $array['string1']='string1'; $array['string2']='string2'; en die inline als ${array['string1']} en ${array['string2']} gebruiken zou een betere indicatie geven :).
Overigens is het waar dat het de leesbaarheid niet ten goede komt, maar in zware CMS'sen verkies ik snelheid boven leesbaarheid, plus dat ik het wel dusdanig gewend ben dat het niets minder leesbaar is ;) Gewoon beginnen met de $-sign, en _dan_ pas de accolades, niets aan de hand ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ik ben het met Kresh eens. Doro het uit de string halen van de variabelen is de code veel duidelijker en leesbaarder. Zeker waneer je een syntax highlighter gebruikt zie je veel sneller wat gewoon tekst is en wat variabel.

Over het tijds aspect kan ik dit zeggen: Hoeveel van de totale uitvoertijd van een script wordt besteed aan de strings. Als je dit vergelijkt met de tijd die wordt doorgebracht in bijvoorbeeld het ophalen van gegevens uit de database zie je dat dit zo'n klein onderdeel is van de totale uitvoortijd dat het verwaarloosbaar is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1