Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/06/2011, 15:26
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problemas con in_array

El problema está en que cuando haces array($row_prefesores['materias_profesor']), te crea un array de una posición con el valor que contenga $row_prefesores['materias_profesor'].

Esto es así, porque el valor de $row_prefesores['materias_profesor'] es un string, no es como cuando realizas array(1,2,3,4).


Una forma sería usando explode y convirtiendo los valores a int:

Código PHP:
Ver original
  1. function convertir($n)
  2. {
  3.    return (int)$n;
  4. }
  5.  
  6.  
  7. $row_prefesores['materias_profesor'] = "1,2,3,4";
  8.  
  9. $arraymateria = array_map("convertir",explode(',',$row_prefesores['materias_profesor'])) ;
  10.  
  11.  do {          
  12.    if (in_array($row_materias['id_materias'], $arraymateria,true)) {
  13.             $materia = "Si Existe";
  14.   }else{$materia = "No Existe";}
  15.  
  16. while ($row_materias = mysql_fetch_assoc($materias));
  17.  
  18. echo $materia;

Otra forma sería sin convertir los valores a int, usando la evaluación no estricta, pero es más recomendable la primera.

Ejemplo:

Código PHP:
Ver original
  1. function convertir($n)
  2. {
  3.    return (int)$n;
  4. }
  5.  
  6.  
  7. $row_prefesores['materias_profesor'] = "1,2,3,4";
  8.  
  9. $arraymateria = explode(',',$row_prefesores['materias_profesor']);
  10.  
  11.  
  12.  do {          
  13.    if (in_array($row_materias['id_materias'], $arraymateria,false)) {
  14.             $materia = "Si Existe";
  15.   }else{$materia = "No Existe";}
  16.  
  17. while ($row_materias = mysql_fetch_assoc($materias));
  18.  
  19. echo $materia;