2017-05-30 2 views
0

Ich habe einige Array in globalen Bereich können sagenPHP lesen Position der globalen Array

$t[0][1] = "a"; 

, wie ich die Position von einer Funktion zugreifen?

function fc(){ 
    echo /* $t[0][1]*/ 
} 

Ich ging durch einige Artikel über globale Variablen, aber ich habe keine Lösung gefunden wird, ist jede Führung für eine einzelne Variable

versucht:

echo $GLOBALS['t[0][1]']; 
echo $GLOBALS['t'][0][1]; 
echo $GLOBALS['t']['0']['1']; 

oder versucht, diese

$t[0][1] = "a"; 
function fc(){ 
    global $t 
    echo $t[0][1]; 
} 

und keine gearbeitet .... Irgendwelche Hilfe dabei?

Vielen Dank im Voraus :)

+0

Verwenden Sie jede Art von Rahmen? Auch du hast die Funktion aufgerufen, oder ?! – Rizier123

+0

übergeben Sie es als Parameter – Akintunde007

+0

übergeben als Parameter: - https://Stackoverflow.com/a/42393334/4248328 –

Antwort

2

Sie haben zwei Möglichkeiten hat, von denen bereits in den Kommentaren von @Akintunde erwähnt.

Pass als Argument:

function fc($arr) { 
    print_r($arr); 
} 
fc($t); 

Wenn Sie es ändern möchten, geben sie durch Verweis:

function fc(&$arr) { 
    $arr[0] = 'test'; 
} 
fc($t); 
echo $t[0]; 

Sie haben bereits die globale Methode genannt, die aufgrund wahrscheinlich nicht funktioniert zum Geltungsbereich, siehe: http://php.net/manual/en/language.variables.scope.php. Aber ich kann nicht genug betonen, die Verwendung von global und $GLOBALS sollte um jeden Preis vermieden werden, es ist eine schreckliche Programmierpraxis und wird Ihnen viele Kopfschmerzen auf die Spur bringen.

Eine andere Methode, die Ihre Variablen außerhalb des Anwendungsbereichs der externen Anwendung hält, besteht darin, alles in Ihre eigene statische Klasse zu stellen, wodurch eine versehentliche Wiederverwendung von Variablen verhindert wird.

class MyClass 
{ 
    private static $t = []; 

    public static function set($index, $value) 
    { 
    self::$t[$index] = $value; 
    } 

    public static function get($index) 
    { 
    return self::$t[$index]; 
    } 
} 

MyClass::set(0, 'test'); 
echo MyClass::get(0) . "\n"; 

Und wenn Sie Ihre Klasse sicherstellen wollen, nicht mit einer vorhandenen Klasse kollidiert, Namespace es: http://php.net/manual/en/language.namespaces.php

+0

duplikat von: -https: //stackoverflow.com/a/42393334/4248328 –

+0

ich bin überhaupt kein down-voter. Ich teile nur –

+0

Dank, das hat seine Magie getan. verwendet & Lösung und funktioniert gut :) – Zorak