2011-01-02 10 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 또는 $tempVAL2은 항상 null을 반환합니다. 왜 ? 함수 sGetVAL을 고치는 방법 ???배열 변수 값을 얻는 방법?

+0

어째서이 기능이 필요한 이유가 무엇입니까? 값에 직접 액세스 할 수 있습니다. –

답변

3

숫자 인덱스와 같은 리터럴 인덱스를 사용하고 있으십니까? 배열 $lang이 함수에서 보이지 않으므로?

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

을이 :

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

숫자 * 문자열 * 인덱스를 숫자와 교환 할 수 있습니다. 다른 점이 없다. '$ a [ '1'] == $ a [1]' –

+1

그는 배열을 함수로 전달할 수 있습니다 ... 전역 변수는 악합니다 : p – Erik

+0

예, 두 의견 모두 옳습니다. 그러나 이것은 아마도 그에게 가장 작은 고통의 방법 일 것입니다. –

2

배열 글로벌이지만, 함수는 (다른 및 초기화되지 않은 것입니다) 그것의 로컬 버전을 사용

이 시도.

먼저 함수에 global $lang을 쓰거나 $GLOBALS['lang']을 사용하여 배열에 액세스하십시오.

1

$lang은 글로벌 변수이므로 sGetVal에는 표시되지 않습니다. 함수는 일반적으로 자신을 정의하는 변수 (및 수퍼 글로블은 $_POST$_GET과 같음) 만 볼 수 있습니다.

당신은

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

를 사용할 수 있지만, 모두 전역 변수없이 할 더 좋을 것이다.

0

sGetVal 함수는 global 키워드를 사용하지 않았으므로 배열 $lang을 볼 수 없습니다. here을 읽으십시오.

관련 문제