2014-10-27 77 views
0

我有一个数组的数组,并希望把数据按特定的顺序。尽管多个阵列循环

这是我的html表单。用户可以根据需要添加新行以输入更多数据。

<tr> 
     <td><input type="text" value="" placeholder="Date of Transfer" name="date[]"/></td> 
     <td><input type="text" value="" placeholder="Equpment Tag" name="tag[]"/></td> 
     <td><input type="text" value="" placeholder="Equpment Model" name="model[]"/></td> 
     <td><input type="text" value="" placeholder="Current Room" name="oldRoom[]"/></td> 
     <td><input type="text" value="" placeholder="Current Owner" name="oldOwner[]"/></td> 
     <td><input type="text" value="" placeholder="Current Dept" name="oldDept[]"/></td> 
     <td><input type="text" value="" placeholder="New Room" name="newRoom[]"/></td> 
     <td><input type="text" value="" placeholder="New Owner" name="newOwner[]"/></td> 
     <td><input type="text" value="" placeholder="New Dept" name="newDept[]"/></td> 
    </tr> 
</tbody> 

<tfoot> 
    <tr> 
     <td colspan="3"><a href="javascript:void(0);" id='anc_add'>Add Row</a></td> 
     <td colspan="3"><a href="javascript:void(0);" id='anc_rem'>Remove Row</a></td> 
     <td colspan="3"><button type="submit">Submit</button></td> 
    </tr> 

然后我把$ _POSTed值放入$ data数组变量。

$data = array( tag => $_POST['tag'], 
       model => $_POST['model'], 
       oldRoom => $_POST['oldRoom'], 
       oldOwner => $_POST['oldOwner'], 
       oldDept => $_POST['oldDept'], 
       newRoom => $_POST['newRoom'], 
       newOwner => $_POST['newOwner'], 
       newDept => $_POST['newDept'] 
       ); 

我想出如何得到的结果,我想手动获取$数据数组的值,但要循环,虽然所有的数据。

//manual retreaval 
echo "</br></br>Manually getting data from the $data array</br>"; 
echo $data['tag'][0] . " - " . $data['model'][0] . " - " . $data['oldRoom'][0]; 

输出:

tag1 - model1 - oldRoom1 

所以是存在的,我怎么能写一个PHP脚本循环尽管在格式$数据数组上面看到的?

标签1 - MODEL1 - oldRoom1 - .... 标签2 - MODEL2 - oldRoom2 - ...

+0

将分别一个总是拥有相同数量的条目?就好像有10个标签会有10个模型和10个旧房间等等? – slapyo 2014-10-27 19:08:32

+0

是的。他们将被设置为必需的。 – mcgoode 2014-10-29 22:18:55

回答

0

要获得我正在寻找的输出,我需要创建一个for循环。首先,我需要计算有多少值存储,然后循环直到虽然$ I是< = $ C - 1

$c = count($data['tag']); 

for ($i = 0; $i <= $c -1 ; $i++) { 
echo $data['tag'][$i] . " - " . 
    $data['model'][$i] . " - " . 
    $data['oldRoom'][$i] . " - " . 
    $data['oldOwner'][$i] . " - " . 
    $data['oldDept'][$i] . " - " . 
    $data['newRoom'][$i] . " - " . 
    $data['newOwner'][$i] . " - " . 
    $data['newDept'][$i] . "</br>"; 
} 

输出

标签1 - 模型1 - 会议室1 - owner1 - DEPT1 - 会议室1 - owner1 - DEPT1

标签2 - MODEL2 - 房间2 - owner2 - DEPT2 - 房间2 - owner2 - DEPT2

1

可以使用foreach()循环来遍历所有的值,即,针对标签:

foreach($data['tag'] as $tag) 
{ 
    echo $tag; 
} 

访问相同的指数在不同的阵列,即创建旧的房间和老业主之间的“匹配”,你可以使用:

foreach($data['oldRoom'] as $index => $oldRoom) 
{ 
    if(isset($data['oldOwner'][$index])) 
     echo $oldRoom . " belonged to " . $data['oldOwner'][$index]; 
    else 
     echo $oldRoom . " didn't have an old owner! :("; 
} 
+0

好吧,我确实看到了这个搜索,但它只输出第一个字符。那么我怎么能回应放入$ data数组的每个post数组的第一个值?示例:tag1 - model1 - oldRoom1 - oldOwner1 - oldDept1/newline tag2 - model2 - oldRoom2 - ...等等。 – mcgoode 2014-10-27 23:11:33

+0

这意味着您的'$ _POST'ed值不会以数组形式出现,而会以字符串的形式出现。编辑问题,包括'html'形式或者尝试'print_r($ data);'以更好地可视化数组保存的值。 – Kypros 2014-10-27 23:24:32

+0

刚才注意到,你需要在你的数组声明中将索引改成一个字符串:''tag'=> $ _POST ['tag']',如果需要的话尝试'print_r($ _ POST);'如预期的那样通过 – Kypros 2014-10-27 23:57:35

0

使用foreach()循环 -

foreach($data as $key => $value) { 
    echo 'key: '.$key.' value: '.$value.'<br>'; 
}