Foros del Web » Programando para Internet » PHP »

Comprobar si una string esta en una posción matriz

Estas en el tema de Comprobar si una string esta en una posción matriz en el foro de PHP en Foros del Web. Buenas, tengo dos variables $inicio = '2014-06-06'; $final = '2014-06-19'; Tengo una matriz que devuelve lo siguiente: Código: array(13) { [0]=> array(3) { [0]=> string(4) ...
  #1 (permalink)  
Antiguo 10/06/2014, 04:39
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 1 mes
Puntos: 2
Comprobar si una string esta en una posción matriz

Buenas,

tengo dos variables

$inicio = '2014-06-06';
$final = '2014-06-19';

Tengo una matriz que devuelve lo siguiente:

Código:
array(13) { [0]=> array(3) { [0]=> string(4) "8700" [1]=> string(0) "" [2]=> string(0) "" } [1]=> array(3) { [0]=> string(4) "8707" [1]=> string(0) "" [2]=> string(0) "" } [2]=> array(3) { [0]=> string(4) "8720" [1]=> string(0) "" [2]=> string(0) "" } [3]=> array(3) { [0]=> string(4) "8727" [1]=> string(0) "" [2]=> string(0) "" } [4]=> array(3) { [0]=> string(4) "8732" [1]=> string(10) "2014-06-06" [2]=> string(10) "2014-06-19" } [5]=> array(3) { [0]=> string(4) "8754" [1]=> NULL [2]=> NULL } [6]=> array(3) { [0]=> string(4) "8784" [1]=> string(0) "" [2]=> string(0) "" } [7]=> array(3) { [0]=> string(4) "8793" [1]=> string(0) "" [2]=> string(0) "" } [8]=> array(3) { [0]=> string(4) "8799" [1]=> string(0) "" [2]=> string(0) "" } [9]=> array(3) { [0]=> string(4) "8803" [1]=> string(10) "2014-06-06" [2]=> string(10) "2014-06-19" } [10]=> array(3) { [0]=> string(4) "8976" [1]=> string(0) "" [2]=> string(0) "" } [11]=> array(3) { [0]=> string(4) "9033" [1]=> string(0) "" [2]=> string(0) "" } [12]=> array(3) { [0]=> string(4) "9046" [1]=> string(0) "" [2]=> string(0) "" } }
Lo que me gustaría que devolviera el ID de las fechas que esta entre las dos variables.

El problema que tengo es que no me sale como comparar las variables con la posición de la array

Gracias
  #2 (permalink)  
Antiguo 10/06/2014, 05:56
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Comprobar si una string esta en una posción matriz

Quieres comparar una fecha con la otra ?

Código PHP:
Ver original
  1. foreach($registros as $ix=>$r)
  2.     echo ($r[2]>=$r[1] ? 'La primera fecha es mayor o igual' : 'la segunda fecha es menor que la primera')." para el registro de posicion #$ix\n";
__________________
Salu2!
  #3 (permalink)  
Antiguo 10/06/2014, 08:13
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Comprobar si una string esta en una posción matriz

Yo tengo dos fechas $inicio y $final

Y luego esta select que me devuelve el post_id, fechainicio, fechafinal

Código PHP:
function getLepra(){ 
        
$db = new connexio();
        
$resultat $db->query("SELECT * FROM wp_postmeta WHERE meta_key = '_ait-dir-item' and meta_value like '%fechaInicio%' and meta_value like '%fechaFinal%'");
                
$i 0;
                while (
$fila3 $resultat->fetch_array(MYSQLI_ASSOC)){
                    
$dades unserialize(utf8_encode($fila3['meta_value']));

                    
$arr[$i][0] = $fila3['post_id'];
                    
$arr[$i][1] = $dades['fechaInicio'];
                    
$arr[$i][2] = $dades['fechaFinal'];
                    
$i++;   
                } 
                
$db->close();
                return 
$arr;      
    } 
Quiero mostrar todos los post_id que esten entre $inicio y $final
  #4 (permalink)  
Antiguo 10/06/2014, 08:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Comprobar si una string esta en una posción matriz

Tu consulta se hace diferente, debes cambiar esta parte:

Cita:
WHERE ...... AND meta_value like '%fechaInicio%' and meta_value like '%fechaFinal%'"
por...

Código SQL:
Ver original
  1. WHERE  ... AND (meta_value >= 'fechaInicio' AND meta_value < 'fechaFinal')

O... usar BETWEEN

Código SQL:
Ver original
  1. WHERE ...  AND (meta_value BETWEEN 'fechaInicio' AND 'fechaFinal')
__________________
Salu2!
  #5 (permalink)  
Antiguo 10/06/2014, 09:52
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Comprobar si una string esta en una posción matriz

Italico76 no puedo hacerlo como dices porque es un campo de un vector serializado
  #6 (permalink)  
Antiguo 10/06/2014, 09:54
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Comprobar si una string esta en una posción matriz

Cita:
Iniciado por manelmanel8 Ver Mensaje
Italico76 no puedo hacerlo como dices porque es un campo de un vector serializado
Esa comparacion que haces con LIKE %...% es super-costosa en tiempo y no vale la pena....... extrae entonces las fechas de tu rango e insertalas como otros 2 campos como debe ser y podras hacer como te digo
__________________
Salu2!
  #7 (permalink)  
Antiguo 10/06/2014, 09:54
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Comprobar si una string esta en una posción matriz

que es un vector serializado???

bueno como te dijo Italico76 la forma normal es esa

hacer la consulta usando los 3 códigos expuestos...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 10/06/2014, 10:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Comprobar si una string esta en una posción matriz

Cita:
Iniciado por arcanisgk122 Ver Mensaje
que es un vector serializado???
Es un array que para poder guardarlo en una DB como Mysql que no soporta el tipo 'vector' (o array) debe pasarse por serialize() o json_encode() que lo convierte de forma reversible en un 'string' con formato:

$arr = (.........);
$serializado = serialize($arr);

eso termina en algo asi:

Cita:
'a:13:{i:0;a:3:{i:0;s:4:"8700";i:1;s:0:"";i:2;s:0: "";}i:1;a:3:{i:0;s:4:"8707";i:1;s:0:"";i:2;s:0:""; }i:2;a:3:{i:0;s:4:"8720";i:1;s:0:"";i:2;s:0:"";}i: 3;a:3:{i:0;s:4:"8727";i:1;s:0:"";i:2;s:0:"";}i:4;a :3:{i:0;s:4:"8732";i:1;s:10:"2014-06-06";i:2;s:10:"2014-06-19";}i:5;a:3:{i:0;s:4:"8754";i:1;N;i:2;N;}i:6;a:3: {i:0;s:4:"8784";i:1;s:0:"";i:2;s:0:"";}i:7;a:3:{i: 0;s:4:"8793";i:1;s:0:"";i:2;s:0:"";}i:8;a:3:{i:0;s :4:"8799";i:1;s:0:"";i:2;s:0:"";}i:9;a:3:{i:0;s:4: "8803";i:1;s:10:"2014-06-06";i:2;s:10:"2014-06-19";}i:10;a:3:{i:0;s:4:"8976";i:1;s:0:"";i:2;s:0:" ";}i:11;a:3:{i:0;s:4:"9033";i:1;s:0:"";i:2;s:0:""; }i:12;a:3:{i:0;s:4:"9046";i:1;s:0:"";i:2;s:0:"";}} '
pero que se puede guardar en un campo normalito de la DB, y se puede luego de recuperar volver a convertir en array con unserialize() o json_decode()
__________________
Salu2!
  #9 (permalink)  
Antiguo 10/06/2014, 10:11
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Comprobar si una string esta en una posción matriz

Claro, el campo esta serializado.

Hago un unserialize y recupero la información.

Código PHP:
function getLepra(){ 
        
$db = new connexio();
        
$resultat $db->query("SELECT * FROM wp_postmeta WHERE meta_key = '_ait-dir-item' and meta_value like '%fechaInicio%' and meta_value like '%fechaFinal%'");
                
$i 0;
                while (
$fila3 $resultat->fetch_array(MYSQLI_ASSOC)){
                    
$dades unserialize(utf8_encode($fila3['meta_value']));

                    
$arr[$i][0] = $fila3['post_id'];
                    
$arr[$i][1] = $dades['fechaInicio'];
                    
$arr[$i][2] = $dades['fechaFinal'];
                    
$i++;   
                } 
                
$db->close();
                return 
$arr;      
    } 
Y me devuelve lo siguiente.

array(13) { [0]=> array(3) { [0]=> string(4) "8700" [1]=> string(0) "" [2]=> string(0) "" } [1]=> array(3) { [0]=> string(4) "8707" [1]=> string(0) "" [2]=> string(0) "" } [2]=> array(3) { [0]=> string(4) "8720" [1]=> string(0) "" [2]=> string(0) "" } [3]=> array(3) { [0]=> string(4) "8727" [1]=> string(0) "" [2]=> string(0) "" } [4]=> array(3) { [0]=> string(4) "8732" [1]=> string(10) "2014-06-06" [2]=> string(10) "2014-06-19" } [5]=> array(3) { [0]=> string(4) "8754" [1]=> NULL [2]=> NULL } [6]=> array(3) { [0]=> string(4) "8784" [1]=> string(0) "" [2]=> string(0) "" } [7]=> array(3) { [0]=> string(4) "8793" [1]=> string(0) "" [2]=> string(0) "" } [8]=> array(3) { [0]=> string(4) "8799" [1]=> string(0) "" [2]=> string(0) "" } [9]=> array(3) { [0]=> string(4) "8803" [1]=> string(10) "2014-06-06" [2]=> string(10) "2014-06-19" } [10]=> array(3) { [0]=> string(4) "8976" [1]=> string(0) "" [2]=> string(0) "" } [11]=> array(3) { [0]=> string(4) "9033" [1]=> string(0) "" [2]=> string(0) "" } [12]=> array(3) { [0]=> string(4) "9046" [1]=> string(0) "" [2]=> string(0) "" } }
  #10 (permalink)  
Antiguo 10/06/2014, 10:39
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Comprobar si una string esta en una posción matriz

entonces tu servidor se va a caer con tanta cosas que hay que hacerle al codigo para conseguir una respuesta correcta jajajaja, en serio que prefiero resolver el problema de como guardas los datos ... y evitar usar vectores antes que tener que buscar el vector descomprimirlo por asi decirlo y caer un match a ver si pega una respuesta...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB

Etiquetas: fecha, matriz, string, variable
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 20:57.