2016-03-04 88 views
0

嗨我試圖將值從輸入到數組中。我是一名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

回答

0

如果你可以修改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']
0

更快的方法是做到以下幾點:

<?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浮動丘壑則呼應像你以前那樣。

0

做到這一點的一種方法是定義一個數組,以將日期名稱映射到您用於輸入名稱的縮寫。

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"; 
} 
0

這是我的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"; 
    } 
} 
?> 
0

我不認爲我完成了我的assisgnment:

創建包含複選框和其他表單元素的形式創建數組。 AND array()函數創建索引和關聯數組。

確保您在訪問索引和關聯數組單獨的數組元素