Foros del Web » Programando para Internet » PHP »

Problemas con in_array

Estas en el tema de Problemas con in_array en el foro de PHP en Foros del Web. Tengo asi en la base de Datos los ID de las materias que un profesor enseña $row_prefesores['materias_profesor'] = 1,3,4,6 ; //Los valores en numeros separados ...
  #1 (permalink)  
Antiguo 28/06/2011, 15:09
 
Fecha de Ingreso: junio-2011
Mensajes: 19
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Problemas con in_array

Tengo asi en la base de Datos los ID de las materias que un profesor enseña
$row_prefesores['materias_profesor'] = 1,3,4,6 ; //Los valores en numeros separados por coma estan en mi base de datos "materias_profesor"

$row_materias['id_materias']; // ID de las materias existentes (1,2,3,4,5,6,7,8)
Código PHP:
$arraymateria = array($row_prefesores['materias_profesor']) ;

   do {         
   if (
in_array($row_materias['id_materias'], $arraymateria,true)) {
            
$materia "Si Existe";
  }else{
$materia "No Existe";}

while (
$row_materias mysql_fetch_assoc($materias));

echo 
$materia
El Problema es que siempre me devuelve $materia = "No Existe"
  #2 (permalink)  
Antiguo 28/06/2011, 15:26
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 12 años, 10 meses
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;
  #3 (permalink)  
Antiguo 28/06/2011, 15:28
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 1 mes
Puntos: 177
Respuesta: Problemas con in_array

Probalo asi a ver que pasa
Código PHP:
Ver original
  1. $arraymateria = array($row_prefesores['materias_profesor']) ;
  2. while ($row_materias = mysql_fetch_assoc($materias))
  3. {
  4.     if (in_array($row_materias['id_materias'], $arraymateria,true))
  5.    {
  6.         $materia = "Si Existe";
  7.     }else{
  8.         $materia = "No Existe";
  9.     }
  10. }
  11. echo $materia;
__________________
la la la

Etiquetas: conprobar, existencia, in_array
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:23.