2014-10-27 118 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>'; 
}