복붙노트

PHP로 POST를 통해 다차원 배열 제출하기

PHP

PHP로 POST를 통해 다차원 배열 제출하기

나는 알려진 수의 열 (예 : 상단 지름, 하단 지름, 패브릭, 색상, 수량)을 가지고 있지만 사용자가 필요에 따라 행을 추가 할 수 있으므로 알 수없는 행 번호를 가진 php 양식을 가지고 있습니다.

각 필드 (열)를 가져 와서 자신의 배열에 배치하는 방법을 발견했습니다.

<input name="topdiameter['+current+']" type="text" id="topdiameter'+current+'" size="5" />
<input name="bottomdiameter['+current+']" type="text" id="bottomdiameter'+current+'" size="5" />

그래서 내가 HTML로 끝내는 것은 :

<tr>
  <td><input name="topdiameter[0]" type="text" id="topdiameter0" size="5" /></td>
  <td><input name="bottomdiameter[0]" type="text" id="bottomdiameter0" size="5" /></td>
</tr>
<tr>
  <td><input name="topdiameter[1]" type="text" id="topdiameter1" size="5" /></td>
  <td><input name="bottomdiameter[1]" type="text" id="bottomdiameter1" size="5" /></td>
</tr>

...and so on.

지금 내가하고 싶은 것은 모든 행과 열을 다차원 배열에 넣고 그 내용을 클라이언트 (선호하는 형식의 테이블)에 이메일로 보내는 것입니다. 나는 모든 입력과 선택을 좋은 배열로 결합하는 법을 정말로 이해할 수 없었습니다.

이 시점에서 여러 개의 1D 배열을 사용하는 것보다 하나의 2D 배열을 사용하는 것이 더 좋을 것이라는 생각이 들기는하지만 여러 개의 1D 배열을 사용하려고해야합니다.

해결법

  1. ==============================

    1.제출할 때 다음과 같이 배열을 생성합니다.

    제출할 때 다음과 같이 배열을 생성합니다.

    $_POST['topdiameter'] = array( 'first value', 'second value' );
    $_POST['bottomdiameter'] = array( 'first value', 'second value' );
    

    그러나 양식 이름을 다음 형식으로 변경하는 것이 좋습니다.

    name="diameters[0][top]"
    name="diameters[0][bottom]"
    name="diameters[1][top]"
    name="diameters[1][bottom]"
    ...
    

    이 형식을 사용하면 값을 반복하는 것이 훨씬 쉽습니다.

    if ( isset( $_POST['diameters'] ) )
    {
        echo '<table>';
        foreach ( $_POST['diameters'] as $diam )
        {
            // here you have access to $diam['top'] and $diam['bottom']
            echo '<tr>';
            echo '  <td>', $diam['top'], '</td>';
            echo '  <td>', $diam['bottom'], '</td>';
            echo '</tr>';
        }
        echo '</table>';
    }
    
  2. ==============================

    2.당신은 그런 이름으로 모든 매개 변수를 제출할 수 있습니다 :

    당신은 그런 이름으로 모든 매개 변수를 제출할 수 있습니다 :

    params[0][topdiameter]
    params[0][bottomdiameter]
    params[1][topdiameter]
    params[1][bottomdiameter]
    

    나중에 다음과 같이하면됩니다.

    foreach ($_REQUEST['params'] as $item) {
        echo $item['topdiameter'];
        echo $item['bottomdiameter'];
    }
    
  3. from https://stackoverflow.com/questions/2433727/submitting-a-multidimensional-array-via-post-with-php by cc-by-sa and MIT license