• Super User

    Array: eliminare gli elementi che soddisfano una condizione

    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 )
    [/PHP]

    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* == '0000-00-00') {
    unset($r_giorni*);
    }
    }
    [/PHP]

    ma non va!

    Grazie.


  • ModSenior

    Ciao,
    puoi fare cosi:
    [php]
    foreach($r_giorni AS $i => $v)
    {
    if($v == '0000-00-00')
    {
    unset($r_giorni*);
    }
    }
    [/php]


  • User Attivo

    Mi pare che la soluzione di felino possa funzionare, ma ci sono un paio di errori
    [php]
    //Rimuovo gli elmenti vuoti, cioè 0000-00-00
    for($i=0; $i < count($r_giorni); $i++){
    if($r_giorni* == '0000-00-00') {
    unset($r_giorni*);
    }
    }
    [/php]

    dovrebbe essere
    [php]
    //Rimuovo gli elmenti vuoti, cioè 0000-00-00
    for($i=0; $i < count($r_giorni); $i++){
    if($r_giorni* == '0000-00-00') {
    unset($r_giorni*);
    }
    }
    [/php]

    Però io mi trovo più a mio agio con il foreach come indicato da Thedarkita.

    C'è una terza soluzione: con la funziona array_keys si possono trovare gli indici di un array in cui i valori soddisfano una ricerca
    [php]
    $keys = array_keys($r_giorni, '0000-00-00', true);
    foreach($keys as $key){
    unset($r_giorni[$key]);
    }
    [/php]


  • User Attivo

    Suggerirei di ricorrere al ciclo for() solo per gli array non associativi.


  • Super User

    Grazie a tutti, alla fine ho usato il foreach!

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

    Grazie.