2016-03-26 18 views
0

Ich habe dieses 2d-Array und spleißen oder unscharf a, b, c, d, wenn d älter als 30 Tage ist. Ganz neu bei PHP-Arrays jede Hilfe sehr geschätzt.Spleißen zweidimensionalen PHP-Array

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) { 
      //??? 
    } 
} 
+0

Sie sind für die ungesetzt Funktion suchen? – Rizier123

+0

Unset 'a, b, c, d' oder unset das gesamte Array-Element aus dem übergeordneten Array? –

Antwort

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

(Und ich, ich selbst, und ich würde assoziative Arrays verwenden es bequemer zu handhaben, lesbar zu menschlichen)

+0

Ich würde auch zögern, foreach zu verwenden, wenn Sie Elemente aus dem Array entfernen möchten, das Sie vorgeben. Ich habe vergessen warum. Ich werde alt. – Gralgrathor

0

Hier ist ein Beispiel der Standard date_diff Funktion und die Datetime-Objekt. Mit date_diff können Sie auch andere Bezeichnungen als Tage unterscheiden. Ich bevorzuge normalerweise die Verwendung von Standardfunktionen, da sie mehr Fälle wie Zeitzonen unterstützt.

-

<?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); 

?> 

-

Ausgang:

Element0: Removing. 
Element1: Not removing. 

// Array[0] is removed. 
Array ([1] => Array ([0] => DateTime Object ([date] => 2015-03-25 00:00:00 [timezone_type] => 3 [timezone] => America/New_York) [1] => DateTime Object ([date] => 2015-03-23 00:00:00 [timezone_type] => 3 [timezone] => America/New_York) [2] => DateTime Object ([date] => 2015-03-24 00:00:00 [timezone_type] => 3 [timezone] => America/New_York) [3] => DateTime Object ([date] => 2016-03-22 00:00:00 [timezone_type] => 3 [timezone] => America/New_York))) 
Verwandte Themen