我有一个以关联数组发送大量混合数据(无线电输入,文本字段和复选框)的表单。为了存储数据,我想根据输入类型将数据拆分为较小的数组。 var_dump如下所示。
ATM i get this when i var_dump the array.
那么我如何制作包含r **键,textbox **键和checkbox **键的新数组?
$arr = array( "r11"=> "2",
"tekstbox11"=> "A",
"udskift11"=> "on",
"r12"=> "2",
"tekstbox12"=> "B",
"udskift12"=> "on",
"r13"=> "2",
"tekstbox13"=> "C",
"udskift13"=> "on",
"r14"=> "0",
"tekstbox14"=> "",
"r15"=> "1",
"tekstbox15"=> "",
"r16"=> "0",
"tekstbox16"=> "",
"r17"=> "1",
"tekstbox17"=> "",
"r18"=> "0",
"tekstbox18"=> "",
"r19"=> "1",
"tekstbox19"=> "",
"r110"=> "0",
"tekstbox110"=> "",
"r111"=> "1",
"textbox111"=> "",
"r112"=> "0",
"textbox112"=> "",
"r113"=> "1",
"textbox113"=> "",
"r114"=> "0",
"textbox114"=> "",
"r115"=> "1",
"textbox115"=> "",
"r116"=> "0",
"textbox116"=> "",
"r117"=> "1",
"textbox117"=> "",
"r118"=> "0",
"textbox118"=> "",
"r119"=> "1",
"textbox119"=> "",
"r120"=> "0",
"textbox120"=> "",
"r21"=> "2",
"tekstbox21"=> "a",
"r22"=> "2",
"tekstbox22"=> "b",
"r23"=> "2",
"tekstbox23"=> "c",
"r24"=> "0",
"tekstbox24"=> "",
"r25"=> "1",
"textbox25"=> "",
"r26"=> "0",
"textbox26"=> "",
"r27"=> "1",
"textbox27"=> "",
"r28"=> "0",
"textbox28"=> "",
"r31"=> "2",
"tekstbox31"=> "1m",
"udskift31"=> "on",
"r32"=> "2",
"tekstbox32"=> "2m",
"udskift32"=> "on",
"r33"=> "2",
"tekstbox33"=> "3m",
"udskift33"=> "on",
"r34"=> "2",
"tekstbox34"=> "4m",
"udskift34"=> "on",
"r35"=> "0",
"tekstbox35"=> "",
"r36"=> "0",
"tekstbox36"=> "",
"r37"=> "0",
"tekstbox37"=> "",
"r38"=> "0",
"tekstbox38"=> "",
"r39"=> "0",
"tekstbox39"=> "",
"r310"=> "0",
"tekstbox310"=> "",
"r311"=> "0",
"tekstbox311"=> "",
"r312"=> "0",
"tekstbox312"=> "",
"r313"=> "0",
"tekstbox313"=> "",
"r314"=> "1",
"textbox314"=> "",
"r315"=> "1",
"textbox315"=> "",
"r316"=> "1",
"textbox316"=> "",
"r317"=> "1",
"textbox317"=> "",
"r318"=> "1",
"textbox318"=> "",
"r319"=> "1",
"textbox319"=> "",
"r320"=> "1",
"textbox320"=> "",
"r321"=> "1",
"textbox321"=> "",
"r322"=> "1",
"textbox322"=> "",
"r323"=> "1",
"textbox323"=> "",
"r324"=> "1",
"textbox324"=> "",
"r325"=> "1",
"textbox325"=> "",
"r326"=> "2",
"textbox326"=> "SLUT MED",
"udskift326"=> "on"
);
答案 0 :(得分:0)
您可以使用array_filter()
之类的东西来检查密钥。
<?php
$inputArray = [
'text1' => 'text1',
'text2' => 'text2',
'checkbox1' => 'checkbox1',
'checkbox2' => 'checkbox2',
'radio1' => 'radio1',
'radio2' => 'radio2'
];
$radioArray = array_filter($inputArray, function($key) {
return false !== strpos($key, 'radio');
});
$textArray = array_filter($inputArray, function($key) {
return false !== strpos($key, 'text');
});
$checkboxArray = array_filter($inputArray, function($key) {
return false !== strpos($key, 'checkbox');
});
答案 1 :(得分:0)
您可以迭代数组并将键分为字母和数字部分,然后将这些部分用作结果数组中的键。
class GameForm(forms.Form):
class Meta:
model = Game
结果将类似于
def view(request):
game = Game.objects.get(id=1)
form = GameForm(instance=game)
return render(request, 'template.html', {'form': form})
但是您知道,如果仅重命名表单输入,例如:
foreach ($array as $key => $value) {
preg_match('/(\D+)(\d+)/', $key, $parts);
$result[$parts[1]][$parts[2]] = $value;
// alpha^ numeric^
}