2012-06-11 4 views
-2
<?php 
$whitelist = array('contact', 'about', 'user'); 
$_GET['page'] = array('contact'); 
$test = $_GET['page']; 
if(isset($test)) 
{ 
    if(in_array($whitelist, $test)) 
    { 
    $got = $test; 
    echo $got; 
    } 
    else 
    { 
    $got = 'home'; 
    echo $got; 
    } 
} 
?> 

이제 여기에 '연락처'로 결과가 표시되지만 '집'이 표시됩니다. 왜 그런가요?in_array()를 이해할 수 없습니다.

+0

것 같습니다 = "접촉" –

답변

3

in_array 첫 번째 인수는 needle (의미 : 찾고자하는 것)이어야하고 두 번째는 haystack (의미 : 우리가 찾고있는 곳)이어야합니다.

나는 당신이 그것들을 뒤집었을뿐만 아니라 needl은 문자열 (또는 다른 변수 유형)이어야하지만 배열이 아니라고 생각한다.

그래서 스크립트는 다음과 같아야합니다

<?php 
$whitelist = array('contact', 'about', 'user'); 
$test = 'contact'; 
if(isset($test)) 
{ 
    if(in_array($test, $whitelist)) 
    { 
    $got = $test; 
    echo $got; 
    } 
    else 
    { 
    $got = 'home'; 
    echo $got; 
    } 
} 
?> 
+0

이 Repox 내 대답 무엇 다음 링크 http://stackoverflow.com/questions/10978798/을 확인 $ 테스트로 변경합니다 위치를 잘못 인식하는 위치 지정 방법 –

+0

정보 및 정확하고 선택 되었음 –

3

를 화이트리스트는 문자열의 배열 $ _GET이기 때문에 [ '페이지'] 배열이 아닌 문자열입니다. 그리고 당신은 paramters에게 잘못된 길을 가져 왔습니다. 당신은 배열의 배열을 찾기 위해 노력하고 같은

+0

Repox가 내 http://stackoverflow.com/에 대한 답을 다음 링크에서 확인하십시오. 질문/10978798/잘못된 위치에 놓는 방법에 대한 기본 위치 지정 방법 - 잘못된 값을 사용하는 헤더 사용 –

0
<?php 
$whitelist = array('contact', 'about', 'user'); 
$_GET['page'] = 'contact'; 
$test = $_GET['page']; 
if(isset($test)) 
{ 
    if(in_array($test, $whitelist)) 
    { 
    $got = $test; 
    echo $got; 
    } 
    else 
    { 
    $got = 'home'; 
    echo $got; 
    } 
} 
?> 
관련 문제