拼接二维php数组

时间:2016-03-26 01:02:17

标签: php arrays

我有这个2d数组,如果d超过30天,喜欢拼接或取消设置a,b,c,d。 完全是php数组的新手,非常感谢。

Array 
(
    [0] => Array  (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
        )
    [1] => Array  (
            [0] => a
            [1] => b
            [2] => c
            [3] => d
        )   
)


foreach($arr as $a) { 
        if($a[3] + 30 < date) {
          //??? 
    }
}

2 个答案:

答案 0 :(得分:2)

foreach($arr as $index => $a) { 
  if($a[3] + 30 < date) {
    unset($arr[$index]);
  }
}

(而我,我自己,我会使用关联数组来处理它更舒服,导致人类可读)

答案 1 :(得分:0)

这是使用标准date_diff函数和DateTime对象的示例。 date_diff还可以为您提供与天数不同的其他面额。我通常更喜欢使用标准功能,因为它支持更多的时区等情况。

-

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        altoButton1.Paint += altoButton1_Paint;
    }

    void altoButton1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawLine(Pens.Red, 3, 3, 10, 10);
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        altoButton1.Invalidate();
    }
}

-

输出:

    <?php

$d1=new DateTime("2016-03-22");
$d2=new DateTime("2015-03-23");
$d3=new DateTime("2015-03-24");
$d4=new DateTime("2015-03-25");
$today= new DateTime();

$arr = array(
    array  (
            $d1,
            $d2,
            $d3,
            $d4,
        ),
    array  (
            $d4,
            $d2,
            $d3,
            $d1
        )
);

$count=0;
foreach ($arr as &$a) { 
    echo "Element" . $count . ": \r\n";
    //print_r(date_diff($a[3], $today));
    $difference = date_diff($a[3], $today);
    if ($difference->days > 30 ){
        echo "Removing. \r\n";
        unset($arr[$count]);

    }
    else{
        echo "Not removing. \r\n";
    }
    $count++;
}

print_r($arr); 

?>