php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 15.06.2011, 22:33  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
mechsikaner befindet sich auf einem aufstrebenden Ast
Standard Unbekannte Syntax: $t{nr} = $PARAM{nr};

hallo!

ich bin in einem fremden script (teil eines sehr großen, unübersichtlichen und selbstgebastelten "CMS") auf diese seltsame syntax gestoßen:

PHP-Code:
function main() {
    GLOBAL 
$PARAM$t;
    
    
$t{nr} = $PARAM{nr};
    
$t{tool} = $PARAM{tool};
    
$t{toolid} = $PARAM{toolid};
        
        
// und so weiter....    


geschweifte klammern so zu benutzen ist mir völlig fremd (liegt aber vielleicht auch daran, dass ich selbst nie mit globalen variablen arbeite)

folgendes hab ich (für mich) schon ausgeschlossen:

- smarty (sieht anders aus, z.b.: {$t})....vielleicht ein anderes template-system? wenn ja: welches?

- variable variablen

- array-werte (z.B. bei ausgabe durch "echo") schreibt man auch anders: {$array['key']}

mehr haben mein hirn und die suchmaschinen nicht ausgespuckt - ich hoffe einem von euch fällt dazu etwas ein

danke im voraus!

gruß,
mechsikaner
mechsikaner ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.06.2011, 22:42  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

1) nein
2) ja, genauer var-teil-Namen-Konkatinierung dessen additives Element eine Konstante ist ( sinnfrei )
3) nein die {} kannste dir bei echo $array['key'] sparen wenn du ans value willst.. o_O

Das geglobale da oben und die var-definitionen sind für mich gut unbedachte gequirlte <braunes Element />
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 15.06.2011, 22:43  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Also wenn $t und $PARAM Strings sind und nr, too, toolid Integer-Konstanten ist das valider Code, Sinn ergibt er dadurch aber noch lange nicht...

Zu den geschweiften Klammern ein Beispiel:
PHP-Code:
$s 'foo';
$s{0} = 'x';
echo 
$x// "xoo" 
Die Syntax gilt allerdings als veraltet, empfohlen werden stattdessen eckige Klammern.

@tr0y: Was soll denn var-teil-Namen-Konkatinierung sein? Man kann zwar ${'t' . nr} schreiben aber nicht $t{nr} - bzw. ist das immer noch Index-Zugriff auf Strings (ebenso sinnfrei, wie gesagt).

Geändert von fab (15.06.2011 um 22:48 Uhr).
fab ist offline   Mit Zitat antworten
Alt 15.06.2011, 22:46  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Der Code ist (abgesehen von Fehlermeldungen wegen fehlender Stringbegrenzer) wohl äquivalent zu:

PHP-Code:
    $t['nr'] = $PARAM['nr'];
    
$t['tool'] = $PARAM['tool'];
    
$t['toolid'] = $PARAM['toolid']; 
{} und [] scheinen beim Zugriff auf Array-Elemente austauschbar zu sein. Habe dazu in der Doku allerdings nichts gefunden außer einem Kommentar.

- http://www.php.net/manual/en/languag...rray.php#99015

Der Einsatz von geschweiften Klammern an der Stelle ist aber definitiv unüblich.
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 15.06.2011, 22:50  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Tatsache... ich nehme alles zurück, habe immer gedacht, die Syntax gebe es nur bei Strings.

Edit: Hier ist übrigens der Nebensatz dazu im Manual.
fab ist offline   Mit Zitat antworten
Alt 15.06.2011, 23:23  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

PHP überrascht einen immer auf's neue. Aber meistens eher im negativen, wie in diesem Fall.

Vor allem frage ich mich wie man auf diese Syntax kommt? Erfahrene Entwickler müssen ja anscheinend zweimal hinsehen.
lcrash ist offline   Mit Zitat antworten
Alt 15.06.2011, 23:50  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Im verlinkten Kommentar ist von Perl die Rede.

- http://www.comp.leeds.ac.uk/Perl/associative.html

Ich würde tippen, das gezeigte Snippet ist uralt und kommt möglicherweise von jemandem mit Perl-Hintergrund.

Das hier geht übrigens nicht:

PHP-Code:
$a{} = 'foo'
__________________
Blog | Buch | Kaloa
mermshaus ist offline   Mit Zitat antworten
Alt 16.06.2011, 00:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Da dynamische Variablen heute noch ähnliche Syntax verwenden ist es vielleicht nicht ganz abwegig, dass beide Features (dynamische Variablen und Arrays) früher auf dem gleichen Weg umgesetzt waren. Im Prinzip lässt sich ja zumindest der Zugriff auf Arrayschlüssel als dyn. Variable vorstellen/
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 16.06.2011, 09:06  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
mechsikaner befindet sich auf einem aufstrebenden Ast
Standard

es handelt sich also hier tatsächlich um eine alternative schreibweise, um array-werte über einen als konstante definierten index anzusprechen

die folgenden ausdrücke geben alle "apple" aus:

PHP-Code:
error_reporting(E_ALL);

$arr = array('fruit' => 'apple');

print 
$arr['fruit'];  // syntax ok

print $arr[fruit];  // Notice: Use of undefined constant fruit - assumed 'fruit'

print $arr{fruit};  // Notice: Use of undefined constant fruit - assumed 'fruit'

define('konstante''fruit');

print 
$arr[konstante];  // syntax ok

print $arr{konstante};  // syntax ok, aber ungebräuchlich 

die schreibweise mit geschwungenen klammern dürfte ein relikt aus früheren zeiten sein

außerdem sollten konstanten groß geschrieben werden...

ein dankeschön an alle, die sich dazu gedanken gemacht haben!

gruß,
mechsikaner

Geändert von mechsikaner (16.06.2011 um 09:13 Uhr).
mechsikaner ist offline   Mit Zitat antworten
Alt 16.06.2011, 09:26  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Allerdings und wie vermutet aus der Sprache Perl "migriert":
http://tutor.hsz-t.ch/tutorials/perl...sociative.html

Deklaration Arrays ( alle Dimensionen )
Code:
%array = ("bla", "bla", blub => "peng", "foo" => "bar");
Zugriff Arrays
Code:
$array{blub}
$array{"foo"}
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler: right syntax to use near '' at line ... axxo PHP Tipps 2010 26 19.01.2010 16:29
[Erledigt] syntax Fehler ? fulltilt PHP Tipps 2009 2 19.02.2009 16:34
PHP Syntax Error (Zeilenangabe) marquies PHP Tipps 2008 7 21.12.2008 13:19
wie müsste die korrekte Syntax sein? dh1sbg Datenbanken 2 06.05.2008 21:45
INSERT....Syntax Fehler OrlandoPolic Datenbanken 16 17.01.2008 23:19
syntax nixdorf Datenbanken 3 16.07.2007 11:39
syntax Error? dh1sbg Datenbanken 4 04.10.2006 14:32
Syntax Fehler PHP Tipps 2006 9 04.08.2006 18:20
SQL - MYSQL Syntax Datenbanken 15 21.02.2006 13:35
[Erledigt] Hilfe, wobei alles richtig ist(sein sollte) -&gt; Syntax err PHP-Fortgeschrittene 12 21.08.2005 15:18
komm bei der Syntax nicht mehr weiter PHP Tipps 2005-2 3 03.08.2005 18:09
[Erledigt] Probleme mit Delete Syntax Datenbanken 6 27.12.2004 12:07
sql syntax fehler PHP Tipps 2004 2 23.10.2004 19:55
[Erledigt] Wo ist der Fehler? (Syntax) PHP Tipps 2004 24 05.07.2004 03:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php syntax was ist \\t, $param[\' \'] php

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum