Html / PHP-양식-배열로 입력
나는 이런 형태를 얻었다
<form>
<input type="text" class="form-control" placeholder="Titel" name="levels[level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[build_time]">
<input type="text" class="form-control" placeholder="Titel" name="levels[level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[build_time]">
</form>
$ _POST 출력으로 갖고 싶은 것은 다음과 같은 배열입니다.
Array (
[1] => Array ( [level] => 1 [build_time] => 123 )
[2] => Array ( [level] => 2 [build_time] => 456 )
)
name = "levels [1] [build_time]"등과 같은 작업을 수행 할 수 있다는 것을 알고 있지만 이러한 요소가 동적으로 추가되기 때문에 인덱스를 추가하기가 어려울 것입니다. 다른 방법이 있습니까?
편집하다:
제안대로 양식을 변경했습니다. 여기에 뭔가 빠진 것 같아서 이제 전체 HTML도 포함 시켰습니다. 이제 내 HTML :
<div class="form-group">
<label class="col-md-2">Name(z.B. 1)</label>
<div class="col-md-10">
<input type="text" class="form-control" placeholder="Titel" name="levels[][level]">
</div>
<label class="col-md-2">Bauzeit(In Sekunden)</label>
<div class="col-md-10">
<input type="text" class="form-control" placeholder="Titel" name="levels[][build_time]">
</div>
</div>
<div class="form-group">
<label class="col-md-2">Name(z.B. 1)</label>
<div class="col-md-10">
<input type="text" class="form-control" placeholder="Titel" name="levels[][level]">
</div>
<label class="col-md-2">Bauzeit(In Sekunden)</label>
<div class="col-md-10">
<input type="text" class="form-control" placeholder="Titel" name="levels[][build_time]">
</div>
</div>
지금 얻는 출력은 다음과 같습니다.
[levels] => Array (
[0] => Array ( [level] => 1 )
[1] => Array ( [build_time] => 234 )
[2] => Array ( [level] => 2 )
[3] => Array ( [build_time] => 456 )
)
편집 2 :
편집에서 제안한대로 양식을 편집하고 대괄호를 이름 끝으로 이동했습니다. 지금 얻는 출력은 다음과 같습니다.
[levels] => Array (
[level] => Array (
[0] => 1
[1] => 2
)
[build_time] => Array (
[0] => 234
[1] => 456
)
)
나는 그것이 다소 효과가 있다고 생각하지만 여전히 복잡해 보입니다. 더 좋은 방법이 없습니까?
간단히 다음 []
과 같은 이름에 추가하십시오.
<input type="text" class="form-control" placeholder="Titel" name="levels[level][]">
<input type="text" class="form-control" placeholder="Titel" name="levels[build_time][]">
해당 템플릿을 가져와 루프를 사용하여 추가 할 수도 있습니다.
Then you can add those dynamically as much as you want, without having to provide an index. PHP will pick them up just like your expected scenario example.
Edit
Sorry I had braces in the wrong place, which would make every new value as a new array element. Use the updated code now and this will give you the following array structure
levels > level (Array)
levels > build_time (Array)
Same index on both sub arrays will give you your pair. For example
echo $levels["level"][5];
echo $levels["build_time"][5];
If is ok for you to index the array you can do this:
<form>
<input type="text" class="form-control" placeholder="Titel" name="levels[0][level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[0][build_time]">
<input type="text" class="form-control" placeholder="Titel" name="levels[1][level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[1][build_time]">
<input type="text" class="form-control" placeholder="Titel" name="levels[2][level]">
<input type="text" class="form-control" placeholder="Titel" name="levels[2][build_time]">
</form>
... to achieve that:
[levels] => Array (
[0] => Array (
[level] => 1
[build_time] => 2
)
[1] => Array (
[level] => 234
[build_time] => 456
)
[2] => Array (
[level] => 111
[build_time] => 222
)
)
But if you remove one pair of inputs (dynamically, I suppose) from the middle of the form then you'll get holes in your array, unless you update the input names...
HTML: Use names as
<input name="levels[level][]">
<input name="levels[build_time][]">
PHP:
$array = filter_input_array(INPUT_POST);
$newArray = array();
foreach (array_keys($array) as $fieldKey) {
foreach ($array[$fieldKey] as $key=>$value) {
$newArray[$key][$fieldKey] = $value;
}
}
$newArray will hold data as you want
Array (
[0] => Array ( [level] => 1 [build_time] => 123 )
[1] => Array ( [level] => 2 [build_time] => 456 )
)
in addition: for those who have a empty POST variable, don't use this:
name="[levels][level][]"
rather use this (as it is already here in this example):
name="levels[level][]"
ReferenceURL : https://stackoverflow.com/questions/20184670/html-php-form-input-as-array
'Program Tip' 카테고리의 다른 글
구성 파일 추가 및 읽기 (0) | 2021.01.10 |
---|---|
창의 URL 해시를 다른 응답으로 바꾸려면 어떻게해야합니까? (0) | 2021.01.10 |
GitHub Atom-편집기에서 중심선 제거 (0) | 2021.01.10 |
TypeScript GUID 클래스? (0) | 2021.01.10 |
열거 형 케이스 '…'은 '…'유형의 멤버가 아닙니다. (0) | 2021.01.10 |