Warning: Illegal offset type in

Matze202

Erfahrenes Mitglied
Hiho @all!

PHP:
$GLOBALS['lang'] = array('de' => array(
        'title'           => 'Dies ist der Titel',
        'page_name'       => 'Page-Name'
));
PHP:
$main_lang_key = array('title', 'page_name');
PHP:
$lang = 'de';
PHP:
for($i = 0; $i < count($main_lang_key); $i++){
  $smarty->assign($main_lang_key[$i], $GLOBALS['lang'][$lang][$main_lang_key[$i]]);
}

Ich brauch mal wieder Hilfe.

Ich dachte ich mach es mir mal einfach und wollte mit diesem Globalen-Array, die Texte der Seite verwalten.

Nur leider bekomme ich da, die folgende Fehlermeldung, mit der ich noch nix anfangen kann und Google half mir nur soweit, dass ich weiß, das irgendwo in der ein Typ-Fehler steckt.
Warning: Illegal offset type in ...

Die betreffende Zeile ist beim 4. Script-Auszug die 2. Zeile. (Also die mit dem Smarty.)

Ich hoffe, dass mir jemand weiter helfen kann.

Gruß Matze202.
 
Erst mal nur zum Problem: Ich sehe spontan keinen Fehler. Du kannst dir aber bei so was meist schnell mit Debugging helfen. Lass dir zum Beispiel innerhalb der Schleife die relevanten Variablen per var_dump ausgeben. Das wird dir schnell zeigen, wo was nicht stimmt.
 
Ich danke dir für den Gedankenanstoß.

Normal checke ich das immer mit Var_Dump, aber ich weiß nicht, wieso ich dies diesmal nicht machte.

Es lag an dem folgende:
PHP:
$GLOBALS['lang'][$lang][$main_lang_key[$i]] //ist das gleiche wie ...
$lang[$lang][$main_lang_key[$i]] /// und nun sah ich, dass ich ja 2 $lang hatte, die sich beisen taten :)

Also das Problem ist behoben. ;)
 
Am Rande noch:

PHP:
for($i = 0; $i < count($main_lang_key); $i++){
  $smarty->assign($main_lang_key[$i], $GLOBALS['lang'][$lang][$main_lang_key[$i]]);
}

Eleganter:

PHP:
foreach ($main_lang_key as $key) {
    $smarty->assign($key, $GLOBALS['lang'][$lang][$key]);
}

Smarty lässt es wohl auch so zu:

PHP:
$smarty->assign($GLOBALS['lang'][$lang]);

Wobei das dann nur die Felder setzt, die in der globalen Variablen vorhanden sind.

Und globale Variablen sollten nach Möglichkeit vermieden werden. Reiche die Werte im Zweifel als Parameter rein.
 
Danke dir für deine Information, ich werde die Sprachdatei nur für Datenbankunterbrechungen nutzen und um Sprachen in der Datenbank zu aktualisieren, dafür werde ich das sowieso nochmal komplett umschreiben.
 
Zurück