将值推入到php的数组中

将值推入到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"; 
    } 
}  

?> 
+0

那'Monday'键会显示一个'E_NOTICE:类型8 - 使用未定义的常量周一 - 假设“星期一” - 在行x' 。我不知道代码中是否有其他内容,您是否可以检查是否启用了错误报告? [如何显示PHP错误?](http:// stackoverflow。com/q/1053424/4577762) – FirstOne

+0

@FirstOne很确定它仍然可以作为传统应用程序使用它。 – Matt

+0

@FirstOne I am chilled:P – Matt

如果你可以修改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()函数创建索引和关联数组。

确保您在访问索引和关联数组单独的数组元素