[RESOLVIDO] Array_diff_assoc

(Mario dos Santos Cantarino) #1

Caros amigo, criei dois arrays com o sc_lookup e estou tentando fazer uma comparação entre esses arrays com a função array_diff_assoc, mas está acusando mensagem de erro “Array to string conversion” no que estou errando ?

(Jailton) #2

Usar: var_dump() para comparar se os 2 arrays a estrutura esta igual em ambos.

E depois cole o código inteiro aqui para o pessoal poder analisar, caso ainda continue o erro.

(Mario dos Santos Cantarino) #3

var_dump do primeiro array:
array(1) { [0]=> array(43) { [0]=> string(4) “1737” [1]=> string(7) “1200001” [2]=> string(6) “FASE-1” [3]=> string(1) “D” [4]=> string(1) “B” [5]=> string(1) “C” [6]=> string(1) “A” [7]=> string(1) “C” [8]=> string(1) “E” [9]=> string(1) “A” [10]=> string(1) “A” [11]=> string(1) “D” [12]=> string(1) “A” [13]=> string(1) “E” [14]=> string(1) “C” [15]=> string(1) “E” [16]=> string(1) “A” [17]=> string(1) “E” [18]=> string(1) “C” [19]=> string(1) “A” [20]=> string(1) “B” [21]=> string(1) “A” [22]=> string(1) “A” [23]=> string(1) “D” [24]=> string(1) “B” [25]=> string(1) “C” [26]=> string(1) “E” [27]=> string(1) “E” [28]=> string(1) “A” [29]=> string(1) “D” [30]=> string(1) “D” [31]=> string(1) “C” [32]=> string(1) “B” [33]=> string(1) “E” [34]=> string(1) “E” [35]=> string(1) “A” [36]=> string(1) “D” [37]=> string(1) “E” [38]=> string(1) “D” [39]=> string(1) “B” [40]=> string(1) “D” [41]=> string(1) “D” [42]=> string(1) “E” } }

(Mario dos Santos Cantarino) #4

var_dump do segundo array:
array(1) { [0]=> array(43) { [0]=> string(1) “9” [1]=> string(7) “1200001” [2]=> string(6) “FASE-1” [3]=> string(1) “D” [4]=> string(1) “B” [5]=> string(1) “C” [6]=> string(1) “A” [7]=> string(1) “C” [8]=> string(1) “D” [9]=> string(1) “A” [10]=> string(1) “A” [11]=> string(1) “D” [12]=> string(1) “A” [13]=> string(1) “E” [14]=> string(1) “C” [15]=> string(1) “E” [16]=> string(1) “A” [17]=> string(1) “E” [18]=> string(1) “C” [19]=> string(1) “A” [20]=> string(1) “B” [21]=> string(1) “A” [22]=> string(1) “A” [23]=> string(1) “D” [24]=> string(1) “B” [25]=> string(1) “C” [26]=> string(1) “E” [27]=> string(1) “E” [28]=> string(1) “A” [29]=> string(1) “D” [30]=> string(1) “D” [31]=> string(1) “C” [32]=> string(1) “B” [33]=> string(1) “E” [34]=> string(1) “E” [35]=> string(1) “A” [36]=> string(1) “D” [37]=> string(1) “E” [38]=> string(1) “D” [39]=> string(1) “B” [40]=> string(1) “D” [41]=> string(1) “D” [42]=> string(1) “E” } }

(Mario dos Santos Cantarino) #5

eis o código:
$total = 0;
$questoes = 40;
$matricula = “1200001”;
$prova = “FASE-1”;

sc_lookup(gabarito, “SELECT * FROM gabarito WHERE matricula = ‘$matricula’ AND tipo_prova = ‘$prova’”);

sc_lookup(resposta, “SELECT * FROM folha_resposta WHERE matricula = ‘$matricula’ AND tipo_prova = ‘$prova’”);

$arrayDiferenca = array_diff_assoc($gabarito, $resposta);

//echo $arrayDiferenca;

//$subtotal = count($arrayDiferenca);

//$total = 10 - ($subtotal * 0.25);
//$acertos = $questoes - $subtotal;

//echo “Quantidade de Acertos: $acertos”;
//echo “Quantidade de Erros: $subtotal”;
//echo “Nota Final: $total”;

(Mario dos Santos Cantarino) #6

eis a resposta de erro:
Atenção
Array to string conversion

Atenção
Array to string conversion

(Jailton) #7

O Scriptcase retorna um array bidimensional
e o comando array_diff_assoc do PHP, só válida se for um array unidimensional.

Então use este código:

$_Total = 0;
$_Questoes = 40;
$_Matricula = '1200001';
$_Prova = 'FASE-1';


/* Macro sc_lookup */

sc_lookup(chk_gabarito, "SELECT * FROM gabarito WHERE matricula = '$_Matricula' AND tipo_prova = '$_Prova'");

sc_lookup(chk_resposta, 'SELECT * FROM folha_resposta WHERE matricula = '$_Matricula' AND tipo_prova = '$_Prova'");


// Aqui Transformamos o array bidimensional do SC em um unidimensional.
$chk_gabarito = $chk_gabarito[0];

// Aqui Transformamos o array bidimensional do SC em um unidimensional.
$chk_resposta = $chk_resposta[0];


$_Diferenca = array_diff_assoc($chk_gabarito, $chk_resposta);

$_SubTotal = count($_Diferenca);

$_Total = 10 - ($_SubTotal * 0.25);
$_Acertos = $_Questoes - $_SubTotal;

echo "Quantidade de Acertos: $_Acertos<BR>";
echo "Quantidade de Erros: $_SubTotal<BR>";
echo "Nota Final: $_Total<BR>";
(Mario dos Santos Cantarino) #8

Valeu Jailton, resolvido.