php - $ _POST 수퍼 글로벌에서 PHP가 어레이를 생성하지 못하도록 중지

기사 출처 php html forms superglobals

PHP는 자동으로 변환됩니다

<input type="text" name="foo[0]" value="x" />
<input type="text" name="foo[1]" value="y" />


으로

$_POST['foo'] = array(
    0 => 'x', 
    1 => 'y'
);


대부분의 시간을 원하는 것입니다. 그러나이 경우에는 이런 일이 일어나지 않았 으면합니다. 어쨌든 PHP에게 이것을하지 말라고 말할 수 있습니까?

나는 내가 php://input 자신을 파싱 할 수 있다는 것을 알고 있지만, 그것을 피할 수 있다면 그렇게하지 않을 것이다.

또한 입력 이름을 바꿀 수있는 옵션이 없습니다.
대괄호 []를 사용하여 PHP에 배열을 생성하도록 명시 적으로 지시하고 대괄호를 사용하지 마십시오.

<input type="text" name="foo_0" value="x" />
<input type="text" name="foo_1" value="y" />


필드는 $ _POST 배열에서 $_POST['foo_0']$_POST['foo_1']로 사용할 수 있습니다.

마크 업에 영향을주지 않는 경우 (항상 클라이언트 측에서 변경할 수 있기 때문에 이상 함) 어레이를 평면화해야합니다.

$post = array();

foreach ($_POST as $key => $value) {
    if (!is_array($value)) {
        $post[$key] = $value;
    } else {
        foreach ($value as $foo => $item) {
            $post[$foo] = $item;
        }
    }
}


아니면 great input on array flattening를 읽어보세요.

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/13693056/

관련 기사
php - Sublime Text 2가있는 Xdebug
php - PHP에서 특정 문자열을 시간으로 변환
php - 작동하지 않는 연관 배열에서 키 제거
php - 인수에서 문자열 연결 (PHP)
php - Zend Framework 2-주석 양식이 작동하지 않습니다.
php - 컬 페이지 제목
php - PHP를 통해 프로세스에 신호 보내기
php - .csv 파일을 생성 할 수 없습니다 : PHP
php - PHP를 통해 wait_timeout 및 max_allowed_packet을 변경하는 방법이 있습니까? [복제]
php - MYSQL 연도의 중단 날짜 중에서 선택