Array: eliminare gli elementi che soddisfano una condizione

  • Creatore Discussione Creatore Discussione felino
  • Data di inizio Data di inizio

felino

Utente Attivo
12 Dic 2013
940
10
18
Aci Catena (Catania)
Salve a tutti,
ho un array, che chiameremo $r_giorni:

PHP:
Array ( [0] => 2014-06-01 [giugno_1] => 2014-06-01 [1] => 2014-06-08 [giugno_2] => 2014-06-08 [2] => 2014-06-15 [giugno_3] => 2014-06-15 [3] => 2014-06-22 [giugno_4] => 2014-06-22 [4] => 2014-06-29 [giugno_5] => 2014-06-29 [5] => 2014-07-06 [luglio_1] => 2014-07-06 [6] => 2014-07-13 [luglio_2] => 2014-07-13 [7] => 2014-07-20 [luglio_3] => 2014-07-20 [8] => 2014-07-27 [luglio_4] => 2014-07-27 [9] => 0000-00-00 [luglio_5] => 0000-00-00 [10] => 2014-08-03 [agosto_1] => 2014-08-03 [11] => 2014-08-03 [agosto_2] => 2014-08-03 [12] => 2014-08-17 [agosto_3] => 2014-08-17 [13] => 2014-08-24 [agosto_4] => 2014-08-24 [14] => 2014-08-31 [agosto_5] => 2014-08-31 [15] => 2014-09-07 [settembre_1] => 2014-09-07 [16] => 2014-09-14 [settembre_2] => 2014-09-14 [17] => 2014-09-21 [settembre_3] => 2014-09-21 [18] => 2014-09-28 [settembre_4] => 2014-09-28 [19] => 0000-00-00 [settembre_5] => 0000-00-00 )

Come faccio ad eliminare gli elementi che soddsfano la condizione: '0000-00-00'?

Avevo scritto:
PHP:
             //Rimuovo gli elmenti vuoti, cioè 0000-00-00
             for($i=0; $i < count($r_giorni); $i++){
                if($r_giorni[i] == '0000-00-00') {
                    unset($r_giorni[i]);
                }
             }

ma non va!

Grazie.
 
Ciao, puoi provare cosi
PHP:
foreach ($r_giorni as $key => $value) {
    if ($value == "0000-00-00") {
        unset($r_giorni[$key]);
    }
}
 
In alternativa, propongo l'uso di array_filter:
PHP:
$r_giorni = array_filter($r_giorni, function($var) {
	return $var != '0000-00-00';
});


ps: scritto così funziona solo con php >= 5.3
 
Oppure in alternativa :p
PHP:
$r_giorni = array_diff($r_giorni,array('0000-00-00'));
 
Grazie a tutti, alla fine ho usato il foreach!

Mi piace molto la soluzione di Nyfyt!

Ecco perchè non funzionava, avevo dimenticato il $ all'interno della condizione IF.

Grazie.
 

Discussioni simili