2017-04-19 86 views
0

我正在开发一个表单构建器以允许管理员创建自定义表单。我使用jQuery脚本将新的HTML块插入到页面中。每个HTML块都包含一系列附加[]的表单字段,以作为数组进行处理。 (例如,question_number [])按阵列键号(非键值)组合多个阵列中的键(PHP)

我想找到一种方法根据数组键值将数组值组合在一起。例如,将q_number [3],q_label [3],q_desc [3],q_format [3]等组合在一起...来自不同阵列的密钥,通过阵列密钥号码分组在一起。

HTML

这里是我的jQuery脚本输出,所以你可以看到了正在进行的变量的基本HTML:

<input name="q_number[]" type="text" class="q-number" placeholder="E.g., 148"> 
<select name="q_format[]" class="q-format"> 
    <option value="text">Simple text field</option><option value="number">Number field</option> 
    <option value="textarea">Paragraph textbox</option> 
    <option value="checkbox">Checkbox</option> 
    <option value="radio">Radio - choose from a list</option> 
    <option value="select">Dropdown select</option> 
</select> 
<input name="q_title[]" type="text" class="q-title" placeholder="E.g., Types of services held in 2016"> 
<textarea name="q_desc[]" class="q-desc" placeholder="Explanation to clarify the question."></textarea> 
<textarea name="options[]" class="q-options" placeholder="option 1, option 2, option 3, etc."></textarea> 
<input type="checkbox" checked="checked" name="required[]" value="1" class="q-required"> 

阵列数据

这里是导致阵列是什么样子时,表单处理时添加了3个问题:

[q_number] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

    [q_format] => Array 
     (
      [0] => number 
      [1] => radio 
      [2] => radio 
     ) 

    [q_title] => Array 
     (
      [0] => Number of baptisms this year 
      [1] => Which service do you like best? 
      [2] => Which demographic is increasing most quickly? 
     ) 

    [q_desc] => Array 
     (
      [0] => 
      [1] => 
      [2] => 
     ) 

    [options] => Array 
     (
      [0] => 
      [1] => Holy Eucharist, Baptism, Confirmation, Wedding, Funeral 
      [2] => Infants, Children, Youth 
     ) 

    [required] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
     ) 

正如你所看到的,每个数组的值通过键号进行协调。

我正在寻找一种方法来做到这一点,不需要知道数组中的键的数量。这是为了一个全国性的系统,每个教区都可以创建自己的表单,所以我需要一个可以动态匹配数组键的解决方案。 (将密钥分组在一起后,我将为每组“问题”数据创建一个数据库记录,以便我可以生成用户将完成的表单)。

创建多维数组完全容易这些 - 但我不知道如何将所有相同数字的键放在一起。有没有办法用多维数组来做到这一点?还是有另一条我应该追求的途径?

非常感谢您的帮助。

回答

1

遍历从其他阵列阵列中的一个与key=>value和抢一样key

foreach ($_POST['q_number'] as $key => $value) { 
    echo $value, ' ', $_POST['q_title'][$key], ' ', $_POST['q_desc'][$key]; // etc 
} 
0

双回路

,而无需知道键,你可以用两个循环做到这一点的名字

<?php 
$data = []; 
$data['q_number'] = []; 
$data['q_number'][] = 1; 
$data['q_number'][] = 2; 
$data['q_number'][] = 3; 

$data['q_answer'][] = "a"; 
$data['q_answer'][] = "b"; 
$data['q_answer'][] = "c"; 


$data['q_required'][] = true; 
$data['q_required'][] = false; 
$data['q_required'][] = false; 

$grouped = []; 

foreach($data as $key =>$valueset){ 
    $counter = 0; 
    foreach($valueset as $key2 => $value){ 
    $grouped[$counter][$key] = $value; 
    $counter +=1; 
    } 

} 

var_dump($grouped); 
?>