domingo, 7 de septiembre de 2014

PHP (02) Cadenas y matrices (10) Operadores de matrices

PHP permite también el uso de operadores entre matrices según la siguiente lista:
  • $a + $b produce la unión de $a y $b.
  • $a == $b produce TRUE si $a y $b tienen los mismos elementos.
  • $a === $b produce TRUE si $a y $b tienen los mismos elementos en el mismo orden.
  • $a != $b produce TRUE si $a no es igual a $b.
  • $a <> $b produce TRUE si $a no es igual a $b.
  • $a !== $b produce TRUE si $a no es idéntico a $b.
Podemos ver en el siguiente ejemplo como funciona en un ifelse, uno de estos operadores:
<?php
 $tortillaPatatas[0] = "huevo";
 $tortillaPatatas[1] = "patatas";
 $tortillaPatatas[2] = "aceite";
 print_r($tortillaPatatas);
 echo '<p></p>';
 $tortillaQueso[0]= "huevo";
 $tortillaQueso[1]= "queso";
 $tortillaQueso[2]= "aceite";
 print_r($tortillaQueso);

 if ($tortillaPatatas == $tortillaQueso){
  echo '<p> \$tortillaPatatas tiene los mismos elementos que \$tortillaQueso';
 }else {
  echo '<p> $tortillaPatatas <b>NO</b> tiene los mismos elementos que $tortillaQueso</p>';
 }
?>

Comparar matrices

Veamos el siguiente ejemplo basado en el anterior:
<?php
 $tortillaPatatas[0] = "huevo";
 $tortillaPatatas[1] = "patatas";
 $tortillaPatatas[2] = "aceite";
 print_r($tortillaPatatas);
 echo '<p></p>';
 $tortillaQueso[0]= "huevo";
 $tortillaQueso[1]= "queso";
 $tortillaQueso[2]= "aceite";
 print_r($tortillaQueso);

 $diferencia = array_diff($tortillaPatatas, $tortillaQueso);

 echo '<h2>Diferencia</h2>';
 foreach ($diferencia as $key => $valor) {
  echo "<p>Clave: $key; valor: $valor ";
 }

 $similitudes = array_intersect($tortillaQueso, $tortillaPatatas);
 echo '<h2>Similitudes</h2>';
 foreach ($similitudes as $key => $valor) {
  echo "<p>Clave: $key; valor: $valor ";
 }

?>

Que nos da como resultado:
Array ( [0] => huevo [1] => patatas [2] => aceite )
Array ( [0] => huevo [1] => queso [2] => aceite )

Diferencia

Clave: 1; valor: patatas

Similitudes

Clave: 0; valor: huevo
Clave: 2; valor: aceite

Se puede observar como funcionan las dos funciones, array_diff y array_intersect, las cuales nos dicen cuales son los elementos que difieren y que coinciden entre las dos variables, tal y como se ven en el ejemplo, pero estas dos funciones solo funcionan con índices numéricos, afortunadamente si tenemos índices asociativos (es decir aquellos a los cuales les hemos puesto una cadena), podemos utilizar las funciones: array_diff_assoc o array_intersect_assoc respectivamente.

No hay comentarios:

Publicar un comentario