将值推入到php的数组中
问题描述:
嗨我试图将值从输入到数组中。我是一名PHP初学者,这是我的任务。我试图让一个时间表像将值推入到php的数组中
星期一=这一数额小时 周二=小时 这个量和等
但过程中我得到混淆。
<?php
if (isset($_POST['submit'])){
$hours =array();
$hours[] =$_POST['mod1'];
$hours[] =$_POST['mod2'];
$hours[] =$_POST['mod3'];
$hours[] =$_POST['tues1'];
$hours[] =$_POST['tues2'];
$hours[] =$_POST['tues3'];
$hours[] =$_POST['wed1'];
$hours[] =$_POST['wed2'];
$hours[] =$_POST['wed3'];
$wkday = array("Monday" => 0, "Tuesday" => 0, "Wednesday" => 0);
$i = 0;
foreach ($hours as $value){
if(i<3){
$wkday[Monday] = $wkday[Monday] + $value;
} else if(i<6){
$wkday[Tuesday] = $wkday[Tuesday] + $value;
} else if(i<9){
$wkday[Wednesday] = $wkday[Wednesday] + $value;
}
$i++;
}
foreach($wkday as $key => $value) {
echo "Day: $key; Hours Worked: $value <br /> \n";
}
}
?>
答
如果你可以修改HTML表单,我建议你改变这种方式,输入名称:
$days = array('mod' => 'Monday', 'tues' => 'Tuesday', 'wed' => 'Wednesday');
然后你可以嵌套循环像这样填写您的$wkday
阵列
<input name="hours[Monday][]">
<input name="hours[Monday][]">
<input name="hours[Monday][]">
<input name="hours[Tuesday][]">
<input name="hours[Tuesday][]">
<input name="hours[Tuesday][]">
(...)
然后,在你的PHP代码,你可以简单地编写代码:
if(isset($_POST['submit']))
{
$wkday = array('Monday' => 0, 'Tuesday' => 0, ...);
foreach($wkday as $key => $val)
{
$wkday[$key] = array_sum($_POST['hours'][$key]);
echo "Day: $key; Hours Worked: {$wkday[$key]} <br /> \n";
}
}
而且请注意 - 指的是你的原代码:
- 你必须使用
$
引用变量:那么,$i
,不i
; -
$wkday[Monday]
(和您的代码中的类似内容)不正确:Monday
被解释为常量。在你的情况,这将工作,因为没有Monday
常数,但如果存在一个常数,你会有不希望的结果。改为使用$wkday['Monday']
。
答
更快的方法是做到以下几点:
<?php
if (isset($_POST['submit'])){
$hours =array();
$hours['Monday'] += (float)$_POST['mod1'];
$hours['Monday'] += (float)$_POST['mod2'];
$hours['Monday'] += (float)$_POST['mod3'];
$hours['Tuesday'] += (float)$_POST['tues1'];
$hours['Tuesday'] += (float)$_POST['tues2'];
$hours['Tuesday'] += (float)$_POST['tues3'];
$hours['Wednesday'] += (float)$_POST['wed1'];
$hours['Wednesday'] += (float)$_POST['wed2'];
$hours['Wednesday'] += (float)$_POST['wed3'];
foreach($hours as $key => $value)
echo "Day: $key; Hours Worked: $value <br /> \n";
}
?>
只是增加基于关闭$_POST
浮动丘壑则呼应像你以前那样。
答
做到这一点的一种方法是定义一个数组,以将日期名称映射到您用于输入名称的缩写。
foreach ($days as $key => $day) { // outer loop iterates over 'mod', 'tues', 'wed'
for ($i=1; $i <= 3; $i++) { // inner loop iterates over 1, 2, 3
$wkday[$day] += $_POST["$key$i"]; // $key$i gives 'mod1' etc.
}
// You can echo as you create the array so you don't have to loop again.
echo "Day: $day; Hours Worked: $wkday[day]<br>\n";
}
答
这是我的html:
<body>
<h1 class="center">Scheduling</h1>
<div class="table" style="border: solid;">
<form class='center' method='POST' action='test2.php'>
<h1> Employee Schedule</h1>
Name: <input type="text" name="Nam" required=" " />
Department: <input type="text" name="Dept" required=" " />
Title: <input type="text" name="title" required=" " />
<h2> Weekdays </h2>
Monday: <input type="number" name="hours[Monday][]" value="0" require="<8" />
<input type="number" name="hours[Monday][]" value="0" require="<8" />
<input type="number" name="hours[Monday][]" value="0" require="<8" />
Tuesday: <input type="number" name="hours[Tuesday][]" value="0" require="<8" />
<input type="number" name="hours[Tuesday][]" value="0" require="<8" />
<input type="number" name="hours[Tuesday][]" value="0" require="<8" />
Wednesday: <input type="number" name="hours[Wednesday][]" value="0" require="<8" />
<input type="number" name="hours[Wednesday][]" value="0" require="<8" />
<input type="number" name="hours[Wednesday][]" value="0" require="<8" />
Thursday: <input type="number" name="hours[Thursday][]" value="0" require="<8" />
<input type="number" name="hours[Thursday][]" value="0" require="<8" />
<input type="number" name="hours[Thursday][]" value="0" require="<8" />
Friday: <input type="number" name="hours[Friday][]" value="0" require="<8" />
<input type="number" name="hours[Friday][]" value="0" require="<8" />
<input type="number" name="hours[Friday][]" value="0" require="<8" />
Saturday: <input type="number" name="hours[Saturday][]" value="0" require="<8" />
<input type="number" name="hours[Saturday][]" value="0" require="<8" />
<input type="number" name="hours[Saturday][]" value="0" require="<8" />
Sunday: <input type="number" name="hours[Sunday][]" value="0" require="<8" />
<input type="number" name="hours[Sunday][]" value="0" require="<8" />
<input type="number" name="hours[Sunday][]" value="0" require="<8" />
<input type="submit" name="submit" value="Calculate" />
</form>
这里我的PHP:
<?php
$Nam = $_POST['Nam'];
$Dept = $_POST['Dept'];
$Title = $_POST['title'];
if(isset($_POST['submit']))
{
$wkday = array('Monday' => 0, 'Tuesday' => 0, 'Wednesday' => 0, 'Thursday' => 0, 'Friday' => 0, 'Saturday' => 0, 'Sunday' => 0);
echo "Employee name: $Nam <br /> \n";
echo "Department: $Dept <br /> \n";
echo "Title: $Title <br /> \n";
foreach($wkday as $key => $val)
{
$wkday[$key] = array_sum($_POST['hours'][$key]);
echo "Day: $key; Hours Worked: {$wkday[$key]} <br /> \n";
}
}
?>
答
我不认为我完成了我的assisgnment:
创建包含复选框和其他表单元素的形式创建数组。 AND array()函数创建索引和关联数组。
确保您在访问索引和关联数组单独的数组元素
那'Monday'键会显示一个'E_NOTICE:类型8 - 使用未定义的常量周一 - 假设“星期一” - 在行x' 。我不知道代码中是否有其他内容,您是否可以检查是否启用了错误报告? [如何显示PHP错误?](http:// stackoverflow。com/q/1053424/4577762) – FirstOne
@FirstOne很确定它仍然可以作为传统应用程序使用它。 – Matt
@FirstOne I am chilled:P – Matt