php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.08.2006, 09:26  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard array_key_exists und variablen [gelöst]

Hallo zusammen!

Ich habe ein Sprachfile "langEN.inc", ein Sprachselector "sprache.php" und mehere Seiten ala "index.php", "kontakt.php" etc ...

Die Variablen im Sprachfile sind so abgelegt:
PHP-Code:
$str['link'][1]            = "Home";
$str['index'][1]                    = "Linux"
Im Sprachselector habe ich folgende Bedinung definiert:

PHP-Code:
if (array_key_exists(1$str['index']) 
Das klappt wunderbar. Nur:
Wenn ich auf der Indexseite bin, möchte ich den Wert aus dem Array "index", auf der Seite Links aus dem Array "links". Die Arrays sind wie die Seiten benannt.

Ich kann mittels
PHP-Code:
$path $_SERVER['PHP_SELF'];
$file basename ($path,".php"); 
der Seitenname rausfilten, bringe ihn dann aber nicht in die Abfrage.
Es müsste ja etwa so aussehen:

PHP-Code:
$path $_SERVER['PHP_SELF'];
$file basename ($path,".php");

function 
ch()
{
include 
'inc/langDE.inc';
if (
array_key_exists(1$str['$file'] )) 
Irgendwie komme ich mit der Syntax nicht klar...
wishy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.08.2006, 09:29  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$str['$file'] ändern in $str[$file]

des weiteren:

include lieber im normalen script durchführen und der function ch() den parameter $str mitgeben!
DER_Brain ist offline  
Alt 10.08.2006, 10:15  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard

Das hatte ich auch mal probiert, allerdings erhalte ich dan folgende Fehlermeldung: "Warning: array_key_exists(): The second argument should be either an array or an object in..."
So sihts aus:
PHP-Code:
if (array_key_exists(1$str[$file])) 
wishy ist offline  
Alt 10.08.2006, 10:23  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

oh,.. das sehe ich erst jetzt



array_kex_exists($file, $str)

könnte es zum beispiel lauten..

der erste parameter ist der key, welcher existieren soll,
der zweite ist das array in dem gesucht werden soll!



mfg
Andi

PS: Sorry.. ich hab vorher ned wirklich aufgepasst!
DER_Brain ist offline  
Alt 10.08.2006, 11:22  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard

Das File mit den Arrays ist so aufgebaut:
PHP-Code:
$str['link'][1]            = "Home";
$str['link'][2]            = "Home";
$str['link'][3]            = "Home";
$str['link'][4]            = "Home";

$str['index'][1]         = "Linux";
$str['index'][2]         = "Linux";
$str['index'][3]         = "Linux";
$str['index'][4]         = "Linux"
Da es für jede Sprache ein eigenes File gibt, kann es eben sein, das eine Seite noch nicht übersetzt wurde. Dann fehlt in diesem File das entsprechende Array.

Nun mache ich auf jeder Seite die Abfrage, welche Seite das geladen wurde, zum Beispiel index.php mit der Sprache Englisch.

Dann mache ich die Abfrage im englischen File, ob das Array str['index'] angelegt wurde.
Wenn die Seite links.php aufgerufen wird, muss logischerweise auch das Array str['links'] gesucht werden.


Dein Code funktioniert nicht.
Der erste Parameter funktioniert mit 1.
Der Zweiteparameter funktioniert mit $str['index'].

Mein Problem ist aber: Wie bringe ich den herausgefilterten dateinamen ($file) in die array_key_esists abfrage?
wishy ist offline  
Alt 11.08.2006, 08:47  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard

Zitat:
Zitat von DER_Brain



array_kex_exists($file, $str)

könnte es zum beispiel lauten..

der erste parameter ist der key, welcher existieren soll,
der zweite ist das array in dem gesucht werden soll!
Das Problem ist, dass im zweiten Parameter der gesuchte wert nicht einfach als $str['index'] sondern als $str['index'][2] ausgelesen werden muss...
wishy ist offline  
Alt 11.08.2006, 10:18  
Gast
 
Beiträge: n/a
Standard

Warum eigentlich? Bindest Du alle Sprachdateien auf einmal ein?
 
Alt 11.08.2006, 11:34  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard

Zitat:
Zitat von Bruchpilot
Warum eigentlich? Bindest Du alle Sprachdateien auf einmal ein?
Die Idee ist eben folgende: Wenn ein User die index.php öffnet, wird ermittelt, ob er die Seite mit einem Sprachparameter (index.php?lang=de) geöffnet hat. je nach dem wird das entsprechende Sprachfile (langDE.inc, langEN.inc) eingebunden. Die Sprache kann er aber anschliessend über flaggen-grafiken selber ändern. Wenn er nun auch eine Seite kommt, welche er deutsch aufgerufen hat, und er möchte sie in englisch, englisch aber nicht verfügbar ist, dann sollte die die sprachwahl nicht möglich sein...

Viel Text, ich weiss. Aber hoffentlich verstehst du nun, warum ich diesen @#!§¬&# Murks mit dem Array-Key mache (oder zumindest versuche...)

Merci für deine Hilfe.
wishy ist offline  
Alt 16.08.2006, 18:59  
Benutzer
 
Registriert seit: 18.05.2008
Beiträge: 41
MrZYX befindet sich auf einem aufstrebenden Ast
MrZYX eine Nachricht über ICQ schicken MrZYX eine Nachricht über AIM schicken MrZYX eine Nachricht über MSN schicken MrZYX eine Nachricht über Yahoo! schicken MrZYX eine Nachricht über Skype™ schicken
Standard

Versuch mal folgendes:
PHP-Code:
<?php
//...
function ch() {
 global 
$file//<--- neu
 
include 'inc/langDE.inc';
 if (
array_key_exists(1$str[$file] ))
 
//....
?>
MrZYX ist offline  
Alt 23.08.2006, 08:54  
Benutzer
 
Registriert seit: 04.02.2004
Beiträge: 65
wishy
Standard


f**k global!
Genau das hat noch gefehlt! Nun läufts 1A.
Merci für eure Hilfe.
Das hatte ich im Zusammenhang mit Funktionen extra noch glesen, aber irgendwie falsch interpretiert.
*sing-openyoureyes*
wishy 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
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Templatesystem mit Funktionen und Variablen drin? BartTheDevil89 PHP Tipps 2008 6 01.07.2008 09:32
E-Mail Formular: Variablen in $message einfügen? thomas108 PHP Tipps 2008 9 02.06.2008 12:33
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Datei mit Variablen so includen, dass Variablen nutzbar? BartTheDevil89 PHP Tipps 2008 6 22.01.2008 20:57
Variablen von Funktionen außerhalb nutzen Wing PHP Tipps 2008 5 28.09.2007 17:05
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
Variablen übergeben PHP Tipps 2005-2 9 30.08.2005 10:58
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
komplexe Variablen übergeben? PHP Tipps 2004-2 8 02.12.2004 08:29
Variablen Namen zuweisen dh1sbg PHP Tipps 2004-2 3 12.11.2004 17:12
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
array_key_exists index2, php array_kex_exists, php include array_key_exists

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