Цикл, хотя несколько массивов
У меня есть массив массивов и я хочу разместить данные в определенном порядке.
Вот моя 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']
);
Я выяснил, как получить желаемый результат, вручную получая значения массива $data, но хочу зациклить все данные.
//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-скрипт для цикла через массив $data в формате, как показано выше?
tag1 - модель1 - oldRoom1 - .... tag2 - модель2 - oldRoom2 - ...
3 ответа
Чтобы получить результат, который я искал, мне нужно было создать цикл 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>";
}
Выходы:
tag1 - модель1 - комната1 - владелец1 - dept1 - комната1 - владелец1 - dept1
tag2 - модель2 - комната2 - владелец2 - dept2 - комната2 - владелец2 - dept2
Вы можете использовать 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! :(";
}
Использовать foreach()
петля -
foreach($data as $key => $value) {
echo 'key: '.$key.' value: '.$value.'<br>';
}