php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.03.2007, 14:51  
Benutzer
 
Registriert seit: 22.10.2005
Beiträge: 98
mollitz
mollitz eine Nachricht über MSN schicken
Standard komische arrays werden in funktionen nicht angenommen!

hi,
ich arbeite grad mit php-fusion und da hats so ein komisches sprachsystem, das mit solchen variablen arbeitet:
PHP-Code:
$locale['xxx001'] = "";
$locale['xxx002'] = "";
$locale['xxx003'] = "";
$locale['xxx004'] = "";
$locale['xxx005'] = "";
$locale['xxx006'] = ""
wobei xxx dann selber für den namen, des eigenen "moduls" ersetzt werden kann, aber das ist ja egal!
meine erste frage dazu ist:
ist das da oben ein "normales" array? weil ein solches hat doch eigentlich bloss zahlen!

und jetzt zu meinem problem:
die datei mit dieser locale-variable wird in einer functions.php-datei included.
jetzt kann ich sie dort ganz normal benutzen. wenn ich allerdings eine funktion in functions.php öffne
bsp:
PHP-Code:
function printlocale () {
echo 
$locale['xxx000'];

kann er die variable darin nicht finden!
wie kann ich denn die variable für die funktion(en, das script hat 20 funktionen und es wäre besser das für alle zu machen) sichtbar machen?

vielen dank
moritz
mollitz ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.03.2007, 15:25  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Also erstens ist es einfach normales Array. Du kannst als Key entweder Zahlen oder auch Strings verwenden.

Zu deinem Problem ... Funktionen haben einen eigenen Variablenraum. Daher Variablen in der Funktion können nicht außerhalb verwendet werden und Variablen außerhalb der Funktion können nicht in der Funktion verwendet werden ... außer du übergibst eine Variable als Parameter printlocal($locale); oder du verwendest global ... also

PHP-Code:
<?php
function printlocale() {
    global 
$locale;

    echo 
$locale['xxx000'];
}
?>
Flor1an ist offline  
Alt 08.03.2007, 15:27  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Ja, das ist ein "normales Array" mit einem sogenannten Index.
Der indes besteht aus Zahlen, trotzdem ist $locale ein array.
Eigentlich sollte da so etwas stehen wie
PHP-Code:
$locale = array();
$locale['?????'] = ...
?> 
Über den Index kann man nun sich wieder gezielt Werte aus dem Array ziehen.


Das mit deiner Funktion ist klar.
In Funktionen gelten nur lokale Variablen.
Je nachdem was du machen möchtest kannst du $locale in die Funktion reingeben
oder, wenn du musst sie global zur Verfügung stellen.

PHP-Code:
function printlocale($locale) {
print_r($locale);
}
?> 
PHP-Code:
function printlocale() {
global 
$locale
print_r($locale);
}
?> 
Grüße
Tine
tinchen ist offline  
Alt 08.03.2007, 15:30  
Benutzer
 
Registriert seit: 22.10.2005
Beiträge: 98
mollitz
mollitz eine Nachricht über MSN schicken
Standard

global is des was ich suchte!
in c is so, dass globale variablen in funktionen sichtbar sind.
mollitz ist offline  
Alt 08.03.2007, 15:33  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ist auch in PHP so ... $_POST, $_GET, $_COOKIE oder $_SESSION und $_SERVER sind z.B. in Funktionen "sichtbar" ... aber ein Array ist keine globale Variable.
Flor1an ist offline  
Alt 08.03.2007, 16:40  
Benutzer
 
Registriert seit: 22.10.2005
Beiträge: 98
mollitz
mollitz eine Nachricht über MSN schicken
Standard

kann ich die variable eigentlich gleich am anfang als global deklarieren, so dass sie wie $_SERVER oder get oder post etc. überall gesehen wird?
z.b. so:
PHP-Code:
zauberwort $datei;
$datei 3;
echo 
$datei
function chdt () {
$datei 5;
}
echo 
$datei
ausgabe des programms:
35

geht das?
mollitz ist offline  
Alt 08.03.2007, 16:48  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Nö, das ist auch extrem unsauber. Sowas solltest Du Dir gar nicht angewöhnen. Auch das mit dem global setzen in der Funktion ist unsauber und auch aus Sicherheitsaspekten nicht ratsam.

Mach es doch gleich richtig oder gar nicht. Wenn es Dir zu blöd ist, mit return-werten zu arbeiten, übergib doch das array als referenz.Aber das solltest Du auch nur tun, wenn Du weißt, was das bedeutet. Wenn nicht, dann viel Spaß bei der Party. *g


http://de2.php.net/manual/en/languag...bles.scope.php
pepe24 ist offline  
Alt 08.03.2007, 17:21  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
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

in seinem falle ist es wohl besser global zu verwenden, ansonsten müsste er nämlich nicht nur die funktion, sondern auch alle deren aufrufe modifizieren.
du kannst alternativ auch $GLOBALS['locale']['xxx000']; in der funktion verwenden.
dermaßen verwendete arrays werden übrigens als assoziative arrays bezeichnet (zum nachschlagen).
nikosch ist gerade online  
Alt 08.03.2007, 18:50  
Benutzer
 
Registriert seit: 22.10.2005
Beiträge: 98
mollitz
mollitz eine Nachricht über MSN schicken
Standard

jap k
und ich weiss was referenzen sind
mollitz ist offline  
 


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
Templatesystem mit Funktionen und Variablen drin? BartTheDevil89 PHP Tipps 2008 6 01.07.2008 09:32
Klassen und externe Funktionen ? ssm PHP-Fortgeschrittene 17 18.07.2007 11:59
eine Variable für alle Funktionen definieren Wing PHP Tipps 2007 16 24.06.2007 21:02
Funktionen überprüfen und Grafik Funktionen hans.karl2 PHP Tipps 2006 10 31.07.2006 20:08
Funktionen in Funktionen - ist das gut? Schneckenkind PHP Tipps 2006 23 10.06.2006 13:39
Arrays kreuzen PHP Tipps 2006 13 08.03.2006 11:36
2 Arrays kombinieren Transmitter PHP Tipps 2006 5 02.01.2006 16:16
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Globale Variabeln in Funktionen finerip PHP Tipps 2007 3 28.11.2005 16:00
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Eure Ideen sind gefragt: eigene Funktionen verwalten PHP-Fortgeschrittene 12 17.01.2005 15:00
Erkennung von Arrays in Strings PHP-Fortgeschrittene 15 07.12.2004 13:00
2 arrays in abhängigkeit ??? PHP Tipps 2004 2 11.08.2004 21:19
Werte eines Arrays in eine MySQL schreiben PHP Tipps 2004 2 28.06.2004 13:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php fusion array, array funktionen ziehen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:37 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.