Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RafaelReis

Como comparar variaveis array

Recommended Posts

for($cc = 1; $cc <= $qtd; $cc++){
	$x = "nome".$cc;
	$nome[$cc] = $_POST[$x];
}
for($c = 1; $c <= $qtd; $c++){
	$query = mysql_query("SELECT * FROM matriz WHERE nome = '$nome[$c]'");
	$re[$c] = mysql_fetch_array($query);
	$i[$c] = $re[$c]['i'];
	$j[$c] = $re[$c]['j'];
	echo mostra_matriz($nome[$c]);
}

gostaria de comparar as variaveis array $i e variaveis array $j

assim:

se caso o loop for 5;

$i[1] == $i[2] and $i[1] == $i[3] and $i[1] == $i[4] and $i[1] == $i[5];

$j[1] == $j[2] and $j[1] == $j[3] and $j[1] == $j[4] and $j[1] == $j[5];

 

como eu faria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

será que se eu usasse o array_sum() daria certo?

 

por exemplo, eu preciso saber se todos são iguais:

 

se todas array o resultado fosse 2: a soma das array's se o loop fosse 5 seria 5*2 = 10;

 

$result = array_sum($i);
$result2 = array_sum($j);

if($result == ($i[1]*$qtd) and $result2 == ($j[1]*qtd) ){
comandos
}

mais eu pensei que se a soma fosse assim:

 

2 2 2 3 1 = 10;

 

não daria =/

 

o array_diff não daria certo, porque eu não sei o resultado do loop, ai eu não posso colocar, só duas arrays dentro do array diff, sendo que o loop pode ser maior que 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

é um seguinte como eu postei o codigo acima eu tenho varias matrizes quero fazer a soma delas;

e dou a opção para o usuario colocar quantas matrizes ele quer somar, ai eu coloco o nome do input "nome+quantidade";

 

e recebo os inputs por for

 

faço a query e recebo o corpo das matrizes;

 

I = linhas;

J = colunas;

 

e todas as matrizes precisam ser iguais tanto nas linhas quanto nas colunas, para continuar os comandos;

 

e eu preciso comparar elas todas!

 

não sei se do jeito que eu fiz fica impossivel ou mais dificil de comparar;

 

gostaria da opinião de vcs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal valeu a ajuda. mais nenhuma das formas que vcs opinaram não deram certo;

 

Eu consegui dessa maneira:

 

$valor = $i[1];
$valor2 = $j[1];
for($z = 2; $z <= count($i); $z++){
if($i != $valor){
$resposta = "não são iguais";
break;
}
else{
$valor = $i[$z];
}
}
for($zz = 2; $zz <= count($i); $zz++){
if($j != $valor2){
$resposta2 = "não são iguais";
break;
}
else{
$valor2 = $j[$zz];
}
}

if($resposta != "não são iguais" and $resposta2 != "não são iguais"){
comandos
}else{
echo "O corpo das matrizes não são iguais por isso não podemos continuar, para a soma!";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa eu me expressar errado então, mais o codigo que eu postei agora ainda está errado o certo seria:

 

$valor = $i[1];
$valor2 = $j[1];
for($z = 2; $z <= count($i); $z++){
if($i[$zz] != $valor){ // alteração é feita aqui
$resposta = "não são iguais";
break;
} // e o else foi tirado
}
for($zz = 2; $zz <= count($i); $zz++){
if($j[$zz] != $valor2){ // alteração é feita aqui
$resposta2 = "não são iguais";
break;
} // e o else foi tirado
}

if($resposta != "não são iguais" and $resposta2 != "não são iguais"){
comandos
}else{
echo "O corpo das matrizes não são iguais por isso não podemos continuar, para a soma!";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos fazer bonitinho:

function matrixCompare($matrix1, $matrix2){
 	foreach($matrix1 as $key=>$row){
 	if(empty($matrix2[$key]){
 	return false;
 	} else {
 	foreach($row as $key_cell=>$cell){
 	if(empty($matrix2[$key][$key_cell]){
 	return false;
 	} else {
 	if($matrix2[$key][$key_cell] != $cell){
 	return false;
 	}
 	}
 	}
 	}
 	}
 	return true;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só agora eu entendi onde você queria chegar.

Bom, esse código todo que você escreveu pode ser substituido por basicamente isso:

 

if ( $perguntas1 == $respostas1 && $perguntas2 == $respostas2 ) {
   echo 'Respostas corretas';
} else {
   echo 'Você errou algo :"(';
}

 

Se ainda quiser uma verificação mais "sofisticada", você ainda pode usar array_intersect_assoc(), que irá retornar todos os valores iguais E que tenham a mesma chave/index. Assim você pode determinar quais perguntas ele acertou, e consequentemente quais errou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu não tinha me expressado direito, mais eu não quero que retorne os valores iguais e sim compare todos os elementos da array $i, e da array $j;

 

PORQUE eu estou fazendo um sistema matematico, de matrizes, e como vcs sabem não se pode somar matrizes com o corpo diferente exemplo:

 

3X3+3X4 = não existe;

 

E sim:

3X3+3x3 = 3x3;

 

e essa foi uma forma simples que eu achei para fazer;

 

bom acho que é isso para quem tinha a mesma duvida que eu está ai a resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.