簡體   English   中英

將值推入PHP中的數組

[英]Pushing values into array of in 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";
    }
}    

?>

一種更快的方法是執行以下操作:

<?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浮動val進行添加,然后像以前一樣回顯。

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

$days = array('mod' => 'Monday', 'tues' => 'Tuesday', 'wed' => 'Wednesday');

然后,您可以使用如下嵌套循環來填充$wkday數組:

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表單,建議您以這種方式更改輸入名稱:

<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']代替。

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

我不認為我完成了自己的承諾:

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

確保訪問索引數組和關聯數組中的單個數組元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM