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 ?
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.
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” } }
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” } }
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”;
eis a resposta de erro:
Atenção
Array to string conversion
Atenção
Array to string conversion
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>";
Valeu Jailton, resolvido.