Многомерный ассоциативный массив в $_POST возвращает только последнее значение

Я попытался создать многомерный ассоциативный массив, но в $_post возвращается только одно значение.

Смотрите рабочий пример:

<html>
<?php
    if (isset( $_POST['form_submit'])){
        $Step=$_POST['form_submit'];
        If ($Step>1) $Step=0;
    }else{
        $Step=0;
    }
switch ($Step) {
    case 0:
        echo '
        <form method="post">
        <input name="Txt[First]" type="text"/>
        <input name="Txt[First][Second]" type="text"/>
        <input name="Txt[First][Second][Third]" type="text"/>
        <input name="Txt[First][Second][Third][Fourth]" type="text"/>
        <button type="submit" name="form_submit" value="'.($Step+1).'">submit</button>
        </form>';
    break;

    case 1:
        echo '<br/></br>print_r($_POST):<br/>';
        print_r($_POST);
    break;
}
?>
</html>

редактировать

если я добавлю "[]" в конце каждого входного имени, у меня будут все значения, но неправильно:
$ _POST будет как:

Array ( 
    [Txt] => Array ( 
        [First] => Array ( 
            [0] => one 
            [Second] => Array ( 
                [0] => two 
                [Third] => Array ( 
                    [0] => three 
                    [Fourth] => Array (
                        [0] => four 
                ) 
            ) 
        ) 
    ) 
)

но мне нужно что-то вроде:

$_Post[First] => one  
$_Post[First][Second] => two  
$_Post[First][Second][Third] => three  

...и так далее

1 ответ

Решение

То, что вы хотите, не возможно. Вы можете иметь только индексы в массиве, но если $_POST['Txt']['First'] это строка one то это также не может быть массив с ['Second'] индекс.

Вы можете поместить текст каждого уровня в именованный элемент:

    <form method="post">
    <input name="Txt[First][text]" type="text"/>
    <input name="Txt[First][Second][text]" type="text"/>
    <input name="Txt[First][Second][Third][text]" type="text"/>
    <input name="Txt[First][Second][Third][Fourth][text]" type="text"/>
    <button type="submit" name="form_submit" value="'.($Step+1).'">submit</button>
    </form>';

Тогда результат будет:

$_Post['Txt'][First]['text'] => one  
$_Post['Txt'][First][Second]['text'] => two  
$_Post['Txt'][First][Second][Third]['text'] => three  
$_Post['Txt'][First][Second][Third][Fourth]['text'] => three  
Другие вопросы по тегам