2011-05-03 3 views
1

PHP의 가장 큰 특징은 요청 변수의 배열을 처리한다는 것입니다. 따라서 ...&test[one]=two&test[three]=four과 같은 문자열을 게시하면 $_REQUEST['test']을 사용하여 test에 배열로 액세스 할 수 있습니다.

그러나 오늘은 다중 차원 $_REQUEST 배열에 문제가 있다는 것을 발견했습니다. 주변에 방법이 있는지 궁금합니다. 테스트하기

, I는 필드 폼 사용했을

array(3) { 
    ["one"]=> 
    array(2) { 
    ["one"]=> 
    string(0) "" 
    ["two"]=> 
    string(0) "" 
    } 
    ["three"]=> 
    array(2) { 
    ["four[five"]=> 
    string(0) "" 
    ["four[six"]=> 
    string(0) "" 
    } 
} 

one 소자 어레이 ified하게하다 :이 제출 된 후

<input name="one[one]" /> 
<input name="one[two]" /> 
<input name="three[four[five]]" /> 
<input name="three[four[six]]" /> 

를, I는 어레이 구조를 볼 var_dump 사용 예상대로 그러나 three 요소는 그렇지 않습니다. 이제는 지원되지 않는다면 신경 쓰지 않아도됩니다.하지만 혼란 스러울 이유가 있습니다. three-four[fivefour[six의 하위 요소 이름을 살펴보십시오. 어떤 이유에서 배열 값으로 이러한 요소를 식별하는 데 도움이되는 후행 ]이 손실 되었기 때문에 배열로 해석되지 않습니다!

누구에게도 설명이 있습니까? $_REQUEST 배열의 최대 레벨을 1 개만 사용하는 것 외에 다른 방법이 있습니까?

+1

, $ _REQUEST 사용을 중지하십시오. 그것은 해 롭습니다. –

+0

@teresko : 게시를 중지하십시오. 그것은 정확하지 않습니다. – mario

답변

5

대신 three[four][five]three[four][six]을 시도하십시오.

+0

나는 그런 바보 야 !! 감사. – user700774

+0

아직도'['] 후행이 왜 떨어지는 지 이해할 수 없습니다. – user700774

+0

분명히 PHP가 문자열을 파싱하는 방법 때문입니다. 정확히 왜, 나는 모른다. PHP의 소스를 열어 볼만한 가치가있는 것은 아닙니다. 올바른 형식을 사용하고 필드 이름에 점을 알아두기 만하면됩니다. http://www.php.net/manual/en/language.variables.external.php를 참조하십시오. – simshaun

0

입력 이름은 변수 "이름"과 완전히 일치합니다.

당신은 PHP 쓸 것 : 마찬가지로 당신의 HTML에

$three['four']['five'] = 'trees'; 

:

<input name="three[four][five]" value="trees" /> 
관련 문제