PDA

View Full Version : Array: eliminare gli elementi che soddisfano una condizione


robertino_salemi
25-01-2014, 10:07
Salve a tutti,
ho un array, che chiameremo $r_giorni:


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:

//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.

biowep
25-01-2014, 14:38
Ma che array hai dichiarato?
La sintassi di php per gli array è la seguente.
array(
key => value,
key2 => value2,
key3 => value3
);
Le chiavi possono essere interi o stringhe, mentre i valori possono essere qualunque tipo di dato.

Inoltre è estremamente SBAGLIATO utilizzare la funzione count nella condizione del ciclo in quanto questa verrà richiamata ad ogni iterazione.
Altro errore è l'uso della variabile i nel corpo del ciclo senza il simbolo $.

http://it1.php.net/manual/en/language.types.array.php

robertino_salemi
25-01-2014, 17:36
Grazie a tutti, alla fine ho usato il foreach!

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

Altra soluzione possibile (postata da un utente su un altro forum)

$r_giorni = array_diff($r_giorni,array('0000-00-00'));


Grazie.