PHP数据处理困难

问题描述:

我有以下问题。PHP数据处理困难

我有一个jQuery手风琴,用于保存里程碑,并在每个里程碑内有一个按钮,用于将事件添加到里程碑。这工作正常。我为每个输入分配名称的方式如下。

<input type="text" name="milestone_0_name"> 
<input type="text" name="milestone_0_start_date"> 
<input type="text" name="milestone_0_end_date"> 
<input type="text" name="milestone_0_description"> 
<input type="text" name="milestone_1_name"> 
<input type="text" name="milestone_1_start_date"> 
<input type="text" name="milestone_1_end_date"> 
<input type="text" name="milestone_1_description"> 
<input type="text" name="milestone_2_name"> 
<input type="text" name="milestone_2_start_date"> 
<input type="text" name="milestone_2_end_date"> 
<input type="text" name="milestone_2_description"> 
and so on... 

所以后来当我添加事件milestone_0例如生成的标记如下:

<input type="text" name="milestone_0_events_event_0_event_name"> 
<input type="text" name="milestone_0_events_event_0_event_start_date"> 
<input type="text" name="milestone_0_events_event_1_event_name"> 
<input type="text" name="milestone_0_events_event_1_event_start_date"> 

我不是$_POST数据处理,所以我用这个办法知道属于什么事件专家到一定的里程碑。问题是我用来确定有多少变量形成里程碑(里程碑的信息和每个事件信息)的函数有一个我似乎无法找到的问题。

功能是:

// Assign all $_POST data to $milestones 
$milestones = $_POST; 
print_r($milestones); 


$milestoneNames = array(); 
$milestoneSize = array(); 

$default = "milestone_"; 
$indexOfMilestone=0; 
$ind=0; 
$text=$default.$indexOfMilestone; 
$indexOfIteration=0; 
$actualSize=0; 
$change=false; 

foreach($milestones as $ms) 
{ 
    $currKey = KeyName($milestones,$indexOfIteration); 
    echo $text.'.'.$currKey.'<br />'; 
    $pos = strripos($currKey, $text); 
    if ($pos === false) 
    { 
     $milestoneSize[$indexOfMilestone] = $indexOfIteration; 
     $indexOfMilestone++; 
     $text=$default.$indexOfMilestone; 
    } 
$indexOfIteration++; 
} 

print_r($milestoneSize); 

测试数据,输出为:

[milestone_0_name] => Milestone 1 
    [milestone_0_start_date] => 12-4-25 
    [milestone_0_end_date] => 12-4-26 
    [milestone_0_description] => abcdefg 
    [milestone_0_events_event_0_event_name] => asdg 
    [milestone_0_events_event_0_event_start_date] => ff 
    [milestone_0_events_event_1_event_name] => fghjk 
    [milestone_0_events_event_1_event_start_date] => ff 
    [milestone_0_events_event_2_event_name] => zxcv 
    [milestone_0_events_event_2_event_start_date] => ff 
    [milestone_0_events_event_3_event_name] => bnm, 
    [milestone_0_events_event_3_event_start_date] => zz 
    [milestone_0_events_event_4_event_name] => qwerty 
    [milestone_0_events_event_4_event_start_date] => zz 
    [milestone_0_events_event_5_event_name] => uiop 
    [milestone_0_events_event_5_event_start_date] => zz 
    [milestone_1_name] => Milestone 2 
    [milestone_1_start_date] => 12-4-26 
    [milestone_1_end_date] => 12-4-27 
    [milestone_1_description] => sadg ads asdgasdg adsga sgdsa gsad adsg asdg 
    [milestone_1_events_event_0_event_name] => 1234 
    [milestone_1_events_event_0_event_start_date] => ff 
    [milestone_1_events_event_1_event_name] => 4321 
    [milestone_1_events_event_1_event_start_date] => ff 
    [milestone_1_events_event_2_event_name] => 6542 
    [milestone_1_events_event_2_event_start_date] => ff 
) 

milestone_0.milestone_0_name 
milestone_0.milestone_0_start_date 
milestone_0.milestone_0_end_date 
milestone_0.milestone_0_description 
milestone_0.milestone_0_events_event_0_event_name 
milestone_0.milestone_0_events_event_0_event_start_date 
milestone_0.milestone_0_events_event_1_event_name 
milestone_0.milestone_0_events_event_1_event_start_date 
milestone_0.milestone_0_events_event_2_event_name 
milestone_0.milestone_0_events_event_2_event_start_date 
milestone_0.milestone_0_events_event_3_event_name 
milestone_0.milestone_0_events_event_3_event_start_date 
milestone_0.milestone_0_events_event_4_event_name 
milestone_0.milestone_0_events_event_4_event_start_date 
milestone_0.milestone_0_events_event_5_event_name 
milestone_0.milestone_0_events_event_5_event_start_date 
**milestone_0.milestone_1_name** 
milestone_1.milestone_1_start_date 
milestone_1.milestone_1_end_date 
milestone_1.milestone_1_description 
milestone_1.milestone_1_events_event_0_event_name 
milestone_1.milestone_1_events_event_0_event_start_date 
milestone_1.milestone_1_events_event_1_event_name 
milestone_1.milestone_1_events_event_1_event_start_date 
milestone_1.milestone_1_events_event_2_event_name 
milestone_1.milestone_1_events_event_2_event_start_date 

Array ([0] => 16) 

中标记为粗体或** **(不知道是否预览作品线路出现问题右),里程碑_0应该是里程碑_1。而这个问题会毁掉整个计数过程:)。

无论如何,如果这不是一个好的方式来存储来自$_POST的数据,我愿意提出改进我的数据存储的建议。

+1

我会重组POST数据到数组:'里程碑[1] [Name]','Milestone [1] [Events] [5] [Name]'... – DCoder 2012-04-25 04:49:16

+0

你能告诉我一个如何处理像我这样的输入的例子语法来生成你提到的数组吗?这将不胜感激:) – 2012-04-25 04:54:12

根据你的要求,这里的我会怎样结构形式:

<ul class="milestones"> 

<li> 
    <label> 
    Name 
    <input type="text" name="milestones[0][name]"> 
    </label> 
    <label> 
    Start date 
    <input type="text" name="milestones[0][start_date]"> 
    </label> 
    <label> 
    End date 
    <input type="text" name="milestones[0][end_date]"> 
    </label> 
    <label> 
    Description 
    <input type="text" name="milestones[0][description]"> 
    </label> 
<ul class="events"> 
    <li> 
    <label> 
    Name 
    <input type="text" name="milestones[0][events][0][name]"> 
    </label> 
    <label> 
    Start date 
    <input type="text" name="milestones[0][events][0][start_date]"> 
    </label> 
    </li> 
    <li> 
    <label> 
    Name 
    <input type="text" name="milestones[0][events][1][name]"> 
    </label> 
    <label> 
    Start date 
    <input type="text" name="milestones[0][events][1][start_date]"> 
    </label> 
    </li> 
</ul> 
</li> 

<li> 
    <label> 
    Name 
    <input type="text" name="milestones[1][name]"> 
    </label> 
    <label> 
    Start date 
    <input type="text" name="milestones[1][start_date]"> 
    </label> 
    <label> 
    End date 
    <input type="text" name="milestones[1][end_date]"> 
    </label> 
    <label> 
    Description 
    <input type="text" name="milestones[1][description]"> 
    </label> 
</li> 

</ul> 

这将产生像POST数据:

milestones => array(
0 => array(
    name => "name", 
    start_date => "2012-04-25", 
    end_date => "2012-04-28", 
    description => "desc", 
    events => array(
    0 => array(
    name => "name0", 
    start_date => "date0", 
    ), 
    1 => array(
    name => "name1", 
    start_date => "date1", 
    ), 
), 
), 
1 => array(
    name => "name", 
    start_date => "2012-05-01", 
    end_date => "2012-05-14", 
    description => "desc", 
), 
) 
+0

优秀:)我欠你六包啤酒:) – 2012-04-25 06:21:49