Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] include in function variablen problem

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • BlackSpirit
    hat ein Thema erstellt [Erledigt] include in function variablen problem.

    [Erledigt] include in function variablen problem

    Hallo Leute.

    ich habe ein Problem und weiß echt nicht woran es liegt ich hoffe ihr könnt mir den Fehler sagen.

    PHP-Code:
    <?

    function test() {
        include "includes/hosters.inc.php";
        global $hoster_array;
    }

    test();

    print_r($hoster_array);

    ?>
    In hosters.inc.php ist ein array ($hoster_array).
    Wenn ich diese Datei aufrufe bekomme ich keine Ausgabe.
    Wahrscheinlich bin ich blind oder was auch immer ich hoffe ihr könnt mir weiterhelfen.

    mfg
    BlackSpirit

  • nikosch
    antwortet
    Die elegantere Variante sähe so aus:

    PHP-Code:
    function test() {
        include 
    "./hosters.inc.php";
        return 
    $hoster_array;
    }

    $hosters test();

    print_r($hosters); 
    Abhängigkeiten in einer Funktion (hier: von der Existenz einer Ressource und einem entspr. Setting darin und einem impliziten Pfad) sollten verhindert werden.

    Für mich so:

    PHP-Code:
    include "./hosters.inc.php";
    // im Include:
    // $hoster_array = whatever;

    function test($hosters) {
        
    // do smthng with $hosters
        // ..
        
    return $hosters;
    }

    if (
    $hoster_array) {
      
    $hosters test((array) $hoster_array);
    }
    else {
      
    $hosters = array ();
    }

    print_r ($hosters); 
    .

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von BlackSpirit Beitrag anzeigen
    [error_reporting] Ist bei mir immer auf E_all
    Dann muss die Aussage, dass du „keine Ausgabe“ bekommst, gelogen sein.

    (Oder du hast display_errors auf off, was beim Entwickeln aber auch blöd wäre.)


    Zitat von ChrisB
    Noch besser, verzichte auf globale Variablen.
    Geht leider nicht.
    Das darf wohl erst mal pauschal bezweifelt werden.

    Einen Kommentar schreiben:


  • BlackSpirit
    antwortet
    @ChrisB
    Zitat von ChrisB Beitrag anzeigen
    Das anschliessend nur innerhalb der Funktion test gültig ist.
    Ja deswegen verwende ich global.
    Zitat von ChrisB Beitrag anzeigen
    Dann stelle das error_reporting vernünftig ein, auf E_ALL.
    Ist bei mir immer auf E_all
    Zitat von ChrisB Beitrag anzeigen
    Und anschliessend gehe im Manual nachlesen, wie man das Schlüsselwort global richtig verwendet.
    Habe ich bereits und leider nicht gefunden deswegen Frage ich hier im Forum.
    Zitat von ChrisB Beitrag anzeigen
    Noch besser, verzichte auf globale Variablen.
    Geht leider nicht.

    @mermshaus

    Hallo danke für deine Lösung funktioniert wunderbar

    Einen Kommentar schreiben:


  • mermshaus
    antwortet
    PHP-Code:
    $GLOBALS['hoster_array'] = 'foo';

    function 
    test() {
        include 
    "./hosters.inc.php";
        
    var_dump($hoster_array); // Gibt Array aus

        
    global $hoster_array;    // $hoster_array := $GLOBALS['hoster_array'],
                                 //   überschreibt die lokale Variable $hoster_array
        
    var_dump($hoster_array); // Gibt 'foo' aus

    Wenn du die global- und include-Zeilen vertauschst, geht es.

    Die elegantere Variante sähe so aus:

    PHP-Code:
    function test() {
        include 
    "./hosters.inc.php";
        return 
    $hoster_array;
    }

    $hosters test();

    print_r($hosters); 

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von BlackSpirit Beitrag anzeigen
    In hosters.inc.php ist ein array ($hoster_array).
    Das anschliessend nur innerhalb der Funktion test gültig ist.

    Wenn ich diese Datei aufrufe bekomme ich keine Ausgabe.
    Dann stelle das error_reporting vernünftig ein, auf E_ALL.

    Und anschliessend gehe im Manual nachlesen, wie man das Schlüsselwort global richtig verwendet. Noch besser, verzichte auf globale Variablen.

    Einen Kommentar schreiben:

Lädt...
X