check if value exists in the array, if there is no write data that does not exist in another array

0
$array      = array(
            'b_E_'.$cnpjClie.'_'.date('Ymd').'_A.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'_A.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'_B.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'_C.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'_A.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'_B.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'_C.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'.'.$ext,
            'b_M_'.$cnpjClie.'_'.date('Ymd').'.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'.'.$ext,
            'b_G_'.$cnpjClie.'_'.date('Ymd').'.'.$ext
        );
        $str = implode("<br>", $array);

        if (in_array($NewArquivo, $array)):
            echo "<b>CNPJ: </b>" . $cnpjClie . "<br>";
            echo "<b>REALIZOU: </b> BACKUP HOJE<br>";
            echo "<b>Arquivo: </b>". $arquivo . "<hr><br>";
        else:
            echo "<b>CNPJ: </b>" . $cnpjClie . "<br>";
            echo "<b>PENDENTE: </b> de backup!<hr><br>";
            //$arrayC   = array($cnpjClie); tentado assim, corrigido abaixo
            $arrayC[] = $cnpjClie;
            $strC     = implode("\n", $arrayC);
        endif;  

I would like to know the data that is not in the array, and store it in another array in the $ arrayC [] case, so that in the end I can notify who did not back up the day, in the test I tried there, it repeats the same data in ELSE.

    
asked by anonymous 30.10.2017 / 17:00

2 answers

0

You must use a loop of repetition in the $ array variable, there inside the loop repeat you make your if to check the in_array (). So when it falls into the else you add the content not found in the variable $ arrayC []

    
30.10.2017 / 19:05
0
// Duas estruturas de dados unidimensional
$array_a = array('A','B','C','D','E','F');
$array_b = array('Z','C','X','F','D');

// Estrutura de dados com a intersecção dos arrays acima.
$array_intersect = array_intersect($array_a,$array_b);
var_dump(array_intersect($array_a,$array_b));

// Mescla dos dois arrays originais, ou seja todos os valores em uma estrutura da dados.
$array_ab = array_merge($array_a, $array_b);
var_dump($array_ab);
// Removendo valores duplicados.
$array_ab = array_unique($array_ab);
var_dump($array_ab);

// Verificar se cada item está na interseção
foreach($array_intersect as $key => $value) {
    if(in_array($value, $array_ab)){
        // Se estiver remove pois só queremos os itens novos, ou seja, que não existe nos dois arrays.
        unset($array_ab[$key]);
    }
}

var_dump($array_ab);

Note: Beware of "in_array", if true, see documentation ( link )

And be careful because the above example only works for two one-dimensional data structures ...

** And beware of the keys, it can make a difference in unset () removal.

I hope I have helped = /

    
30.10.2017 / 19:25