Foros del Web » Programando para Internet » PHP »

comparacion de cadenas

Estas en el tema de comparacion de cadenas en el foro de PHP en Foros del Web. hola que tal, tengo un problemita utilizando el strcasecmp, se supone que este es case-insesitive pero conmigo parece que no quiere trabajar, tengo el siguiente ...
  #1 (permalink)  
Antiguo 01/07/2009, 13:21
Avatar de lukas4  
Fecha de Ingreso: octubre-2008
Ubicación: frente al pc
Mensajes: 496
Antigüedad: 15 años, 6 meses
Puntos: 12
comparacion de cadenas

hola que tal, tengo un problemita utilizando el strcasecmp, se supone que este es case-insesitive pero conmigo parece que no quiere trabajar, tengo el siguiente codigo:

Código PHP:
<?php 
$campos
[] = array();
$link=mysql_connect('localhost','root','');
mysql_select_db('mantoredes',$link);
$file='sample.xml';
$fh=fopen($file,'w') or die ("can't open file");
fwrite($fh,'<chart><chart_data><row><string>NULL</string><string>LoL</string></row>');
$query="SELECT * FROM marcas";
$busqueda=mysql_query($query,$link);
$i=0;$j=0;$k=0;$l=0;
while(
$row=mysql_fetch_array($busqueda)){
    
$campos[$i]=$row['marca'];
    echo 
$i.'.-'.$campos[$i].'<br>';
    
$i++;
    }
echo 
'<br>';
for(
$j=0;$j<$i;$j++){
    
$l=0;
    if(
$campos[$j]==""){
        echo 
'J = a: '.$j;
        echo 
' el campo esta vacio, pasamos al siguiente.<br>';
        }
    else{
        echo 
'J = a: '.$j.' marca: '.$campos[$j].'<br>';
        for(
$k=1;$k<$i;$k++){
            if(
$campos[$k]!=""){
                echo 
'K = a: '.$k.' marca: '.$campos[$k].', son iguales?<br>';
                if(
strcasecmp($campos[$j],$campos[$k])){
                    echo 
'si, son iguales, aumentamos L de: '.$l;
                    
$l=$l+1;
                    echo 
' a: '.$l.'<br><br>';
                    unset(
$campos[$k]);            
                    }
                else{
                    echo 
'nel, no son iguales<br><br>';
                    }
                }
            else{
                echo 
'K = a:'.$k.', el campo de K esta vacio<br><br>';
                }
            }
        unset(
$campos[$j]);
        }
    }
?>
estos son los valores que tengo en la base de datos:

0.-DELL
1.-DELL
2.-DELL
3.-HP
4.-HP
5.-ASUS
6.-ASUS
7.-DELL
8.-ASUS
9.-HP

y esto es lo que me muestra en pantalla (junto con lo anterior):
Código pantalla:
Ver original
  1. J = a: 0 marca: DELL
  2. K = a: 1 marca: DELL, son iguales?
  3. nel, no son iguales
  4.  
  5. K = a: 2 marca: DELL, son iguales?
  6. nel, no son iguales
  7.  
  8. K = a: 3 marca: HP, son iguales?
  9. si, son iguales, aumentamos L de: 0 a: 1
  10.  
  11. K = a: 4 marca: HP, son iguales?
  12. si, son iguales, aumentamos L de: 1 a: 2
  13.  
  14. K = a: 5 marca: ASUS, son iguales?
  15. si, son iguales, aumentamos L de: 2 a: 3
  16.  
  17. K = a: 6 marca: ASUS, son iguales?
  18. si, son iguales, aumentamos L de: 3 a: 4
  19.  
  20. K = a: 7 marca: DELL, son iguales?
  21. nel, no son iguales
  22.  
  23. K = a: 8 marca: ASUS, son iguales?
  24. si, son iguales, aumentamos L de: 4 a: 5
  25.  
  26. K = a: 9 marca: HP, son iguales?
  27. si, son iguales, aumentamos L de: 5 a: 6
  28.  
  29. J = a: 1 marca: DELL
  30. K = a: 1 marca: DELL, son iguales?
  31. nel, no son iguales
  32.  
  33. K = a: 2 marca: DELL, son iguales?
  34. nel, no son iguales
  35.  
  36. K = a:3, el campo de K esta vacio
  37.  
  38. K = a:4, el campo de K esta vacio
  39.  
  40. K = a:5, el campo de K esta vacio
  41.  
  42. K = a:6, el campo de K esta vacio
  43.  
  44. K = a: 7 marca: DELL, son iguales?
  45. nel, no son iguales
  46.  
  47. K = a:8, el campo de K esta vacio
  48.  
  49. K = a:9, el campo de K esta vacio
  50.  
  51. J = a: 2 marca: DELL
  52. K = a:1, el campo de K esta vacio
  53.  
  54. K = a: 2 marca: DELL, son iguales?
  55. nel, no son iguales
  56.  
  57. K = a:3, el campo de K esta vacio
  58.  
  59. K = a:4, el campo de K esta vacio
  60.  
  61. K = a:5, el campo de K esta vacio
  62.  
  63. K = a:6, el campo de K esta vacio
  64.  
  65. K = a: 7 marca: DELL, son iguales?
  66. nel, no son iguales
  67.  
  68. K = a:8, el campo de K esta vacio
  69.  
  70. K = a:9, el campo de K esta vacio
  71.  
  72. J = a: 3 el campo esta vacio, pasamos al siguiente.
  73. J = a: 4 el campo esta vacio, pasamos al siguiente.
  74. J = a: 5 el campo esta vacio, pasamos al siguiente.
  75. J = a: 6 el campo esta vacio, pasamos al siguiente.
  76. J = a: 7 marca: DELL
  77. K = a:1, el campo de K esta vacio
  78.  
  79. K = a:2, el campo de K esta vacio
  80.  
  81. K = a:3, el campo de K esta vacio
  82.  
  83. K = a:4, el campo de K esta vacio
  84.  
  85. K = a:5, el campo de K esta vacio
  86.  
  87. K = a:6, el campo de K esta vacio
  88.  
  89. K = a: 7 marca: DELL, son iguales?
  90. nel, no son iguales
  91.  
  92. K = a:8, el campo de K esta vacio
  93.  
  94. K = a:9, el campo de K esta vacio
  95.  
  96. J = a: 8 el campo esta vacio, pasamos al siguiente.
  97. J = a: 9 el campo esta vacio, pasamos al siguiente.
alguna idea de que estoy haciendo es lo que no estoy haciendo bien :S

nota: no le hagan caso a lo del fwrite y esas cosas, eso es para despues.
  #2 (permalink)  
Antiguo 01/07/2009, 13:41
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: comparacion de cadenas

Deberias leerte de nuevo como funciona la funcion PHP strcasecmp(), fijate en lo que devuelve. Devuelve 0 si las cadenas son iguales.

Modifica esta linea
Código PHP:
if(strcasecmp($campos[$j],$campos[$k]) == 0
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #3 (permalink)  
Antiguo 02/07/2009, 09:33
Avatar de lukas4  
Fecha de Ingreso: octubre-2008
Ubicación: frente al pc
Mensajes: 496
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: comparacion de cadenas

oh es verdad, pase de largo eso de que me regresa cero si son iguales, gracias!
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 21:28.