2011-01-02 12 views
1
$lang['profil_basic_medeni'] = array( 
    1 => 'Bekâr', 
    2 => 'Evli', 
    3 => 'Nişanlı', 
    4 => 'İlişkide', 
    5 => 'Ayrılmış', 
    6 => 'Boşanmış' 
    ); 
$lang['profil_basic_sac'] = array( 
    1 => 'Normal', 
    2 => 'Kısa', 
    3 => 'Orta', 
    4 => 'Uzun', 
    5 => 'Fönlü', 
    6 => 'Saçsız (Dazlak)', 
    7 => 'Karışık/Dağınık', 
    8 => 'Her Zaman Bol Jöleli :)' 
    ); 

function sGetVAL($item,$valno) { 
    $sonuc = $lang[$item][$valno]; 
    return $sonuc; 
} 

$tempVAL1 = sGetVAL('profil_basic_medeni','3'); // return null 
//or 
$tempVAL2 = sGetVAL('profil_basic_sac','7'); // return null 

$tempVAL1 oder $tempVAL2 immer zurück null. Warum ? Wie repariere ich die Funktion sGetVAL ???Wie erhält man einen Array-Variablenwert?

+0

Warum brauchen Sie die Funktion trotzdem? Sie könnten direkt auf die Werte zugreifen. –

Antwort

3

Weil Sie Literalindizes wie numerische Indizes verwenden? Weil das Array $lang nicht in Funktion sichtbar ist?

versuchen Sie dies:

$tempVAL1 = sGetVAL('profil_basic_medeni',3); // return null 
//or 
$tempVAL2 = sGetVAL('profil_basic_sac',7); // return null 

und diese:

function sGetVAL($item,$valno) { 
    global $lang; 
    $sonuc = $lang[$item][$valno]; 
    return $sonuc; 
} 
+1

Sie können numerische * string * Indizes mit numerischen Indizes austauschen. Es gibt keinen Unterschied. '$ a ['1'] == $ a [1]' –

+1

Er könnte auch das Array in die Funktion übergeben ... Globals sind böse: p – Erik

+0

yup, beide Kommentare sind richtig. Aber das ist der Weg des kleinsten Schmerzes für ihn, wahrscheinlich :) –

2

Array global ist, sondern Ihre Funktion verwendet eine lokale Version davon (die unterschiedliche und nicht initialisiert ist).

schreiben Sie entweder zuerst global $lang in Ihre Funktion oder verwenden Sie $GLOBALS['lang'], um auf das Array zuzugreifen.

1

$lang ist eine globale Variable, die für sGetVal nicht sichtbar ist. Funktionen können normalerweise nur Variablen sehen, die sie selbst definieren (und Superglobale wie $_POST und $_GET).

könnten Sie

function sGetVAL($item,$valno) { 
    global $lang; 
    $sonuc = $lang[$item][$valno]; 
    return $sonuc; 
} 

verwenden, aber es wäre besser, ganz ohne globale Variablen zu tun.

0

Die Funktion sGetVal kann das Array $lang nicht sehen, da Sie das Schlüsselwort global nicht verwendet haben, um es in den Geltungsbereich zu bringen. Lesen Sie here.

Verwandte Themen