【问题标题】:subtracting dates from two arrays using for each loops in php使用php中的每个循环从两个数组中减去日期
【发布时间】:2018-10-27 02:59:11
【问题描述】:

我创建了一个将日期作为数组的表单:

  <form action="" enctype=”multipart/form-data” method="post" >
    Date1 <input type="date" name="tst1[]">
         </div> 
         <div id="div2">
          Date2 <input type="date" name="tst2[]">
        </div>  
         <input type="submit" value="test" name="submit">

    </form>

JavaScript:

var x=1
function appendRow1()
{
   var d = document.getElementById('div1');
    d.innerHTML += '<input type="date" name="tst1[]"/>';
}

    var x=1
function appendRow2()
{
   var d = document.getElementById('div2');
    d.innerHTML += '<input type="date" name="tst2[]"/>';
}

我试图减去用户输入的日期,这样两个数组的位置 1 的日期都会被减去,但代码会减去所有组合中的所有日期。

php:

(isset($_POST['submit']) && is_array($_POST) == "test") {

    foreach($_POST['tst1'] as $date1){    
    foreach ($_POST['tst2'] as $date2){


    $diff = abs(strtotime($date2) - strtotime($date1));
        echo $diff;
        $years = floor($diff / (365*60*60*24));
          $yy[] = $years;
        $average = array_sum($yy)/count($yy);
 echo $average . '<br>';

【问题讨论】:

  • 这里你在一个 foreach 中运行一个 foreach...如果要将 $_POST[tst1][n] 与 $_POST[tst2][n] 进行比较,你只需要一个 foreach

标签: javascript php arrays


【解决方案1】:

如果只需要减去每个数组的位置 1 可以直接访问该位置而无需遍历整个数组:

$date1 = $_POST['tst1'][1];
$date2 = $_POST['tst2'][1];

如果你想减去两个数组相同位置的元素,你可以使用 for 循环,因为它实例化了一个迭代器变量,你可以使用它来设置两个数组的位置。

让我们考虑两个数组的大小相同。

$date1 = $_POST['tst1'];
$date2 = $_POST['tst2'];
for($i = 0; $i < sizeof($date1); $i++){
   $diff = abs(strtotime($date2[$i]) - strtotime($date1[$i]));
   //...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    相关资源
    最近更新 更多