Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] JSON escojer valor espesifico

Estas en el tema de JSON escojer valor espesifico en el foro de PHP en Foros del Web. hola que tal quiciera ver si me pueden ayudar con esto que ya me tiene loco y no logro hacerlo, consiste que tengo el siguiente ...
  #1 (permalink)  
Antiguo 23/11/2013, 02:19
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
JSON escojer valor espesifico

hola que tal quiciera ver si me pueden ayudar con esto que ya me tiene loco y no logro hacerlo, consiste que tengo el siguiente json
Código HTML:
{
	"result": {
		"trabajo": true,
		"datos": [
			  {
				"id": "4000",
				"date": "6/18/2012",
				"idunico": "57954022"
			  },
			  {
				"id": "4001",
				"date": "5/11/2011",
				"idunico": "57939700"
                 	  },
			  {
			
				"id": "4003",
				"date": "6/18/2012",
				"idunico": "58516719"
			  },
			  {
				"id": "4004",
				"date": "5/11/2011",
				"idunico": "57939754"
			  }
			  ]
		   }
}
Lo que nesecito es cojer el "idunico" pero con la condicion que sea del id un ejemplo: quiero el "idunico" del 4001 solo quiero que me coja ese dato y que lo imprima estoy trabajando con php

lo imprimo asi
Código PHP:
$resusltado $data['result']['datos']['idunico']; 
echo 
$resusltado
pero como espesifico que sea del id 4001 ??

espero me puedan ayudar.
  #2 (permalink)  
Antiguo 23/11/2013, 08:03
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

Pues mira si esto te sirve:

Código PHP:
Ver original
  1. $buscar = "4001";
  2. $data = '{
  3.     "result": {
  4.         "trabajo": true,
  5.         "datos": [
  6.               {
  7.                 "id": "4000",
  8.                 "date": "6/18/2012",
  9.                 "idunico": "57954022"
  10.               },
  11.               {
  12.                 "id": "4001",
  13.                 "date": "5/11/2011",
  14.                 "idunico": "57939700"
  15.                       },
  16.               {
  17.            
  18.                 "id": "4003",
  19.                 "date": "6/18/2012",
  20.                 "idunico": "58516719"
  21.               },
  22.               {
  23.                 "id": "4004",
  24.                 "date": "5/11/2011",
  25.                 "idunico": "57939754"
  26.               }
  27.               ]
  28.            }
  29. }';
  30.  
  31. function find($v){
  32.     global $buscar;
  33.     if( $v['id'] == $buscar ){
  34.         return true;
  35.     } else {
  36.         return false;
  37.     }
  38. }
  39.  
  40. $data = json_decode($data, true);
  41.  
  42. $datos = $data['result']['datos'];
  43.  
  44. var_export(current(array_filter($datos, "find")));

Me pareció interesante tu planteamiento

Te dejo la documentación para que entiendas el concepto:

Ámbito variables, current, array_filter

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 23/11/2013, 10:16
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: JSON escojer valor espesifico

Puedes hacer algo asi
Código PHP:
Ver original
  1. $resultado = $data['result']['datos'];
  2. foreach($resultado as $array){
  3. if($array['id']=="4001"){
  4. $result=$array['idunico'];
  5. }
  6. }
  7. echo $result;
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #4 (permalink)  
Antiguo 23/11/2013, 11:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: JSON escojer valor espesifico

Muchas gracias a los dos me sirvio de mucho se los agradesco
  #5 (permalink)  
Antiguo 01/12/2013, 07:07
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: JSON escojer valor espesifico

Cita:
Iniciado por xSkArx Ver Mensaje
Puedes hacer algo asi
Código PHP:
Ver original
  1. $resultado = $data['result']['datos'];
  2. foreach($resultado as $array){
  3. if($array['id']=="4001"){
  4. $result=$array['idunico'];
  5. }
  6. }
  7. echo $result;

hola de nuevo me surguio un problemita con este codigo al foreach no le puedo poner "else"

Código PHP:
foreach($resultado as $array){
if(
$array['id']=="4001"){
$result=$array['idunico'];
}else{
$result "no existe la id";
}

lo ago asi y me sale todos no existe la id.

me podrian ayudar con esto pls.
  #6 (permalink)  
Antiguo 01/12/2013, 10:57
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

Pon mas contexto el código antes del foreach y código después, para ver que es lo que estas haciendo y que es lo que quieres hacer.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 01/12/2013, 18:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: JSON escojer valor espesifico

En si es un salto entre direcciones json que en verdad son api que me regresa el resultado en json.

Código PHP:
$json_url "localhost/prueba/myjaon.json";
$json file_get_contents($json_urlfalse);
$data json_decode($jsontrue);


$json_url2 "localhost/prueba/myjaon2.json";
$json2 file_get_contents($json_url2false);
$data2 json_decode($json2true);

$tam 40;
for(
$i=0$i<= $tam ;$i++)
   {
   
$defindex $data['result']['items'][$i]['id'];  //obtengo el id 
   
$resultado $data2['result']['assets'];
   foreach(
$resultado as $array)
         {
           if(
$array['name'] == $defindex)
                     {
                    
$result $array['idunico'];
                 }else
                     {
                        
$result "123456789";
                     }
          }

$json_url3 "localhost/prueba/myjaon3.json?classid=".$result."";
$json3 file_get_contents($json_url3false);
$data3 json_decode($json3true);

$puesto $data3['result'][$result]['tags']['1']['puesto'];
$piso $data3['result'][$result]['tags']['4']['piso '];    
$clave $data3['result'][$result]['tags']['5']['clave '];    

echo 
"puesto :".$puesto." <br>";
echo 
"piso :".$piso." <br>";
cho "clave :".$clave." <br>";
echo 
"-----------------------------<br>";

Discula si no me expreso bien pero soy un poco nuevo en esto de php y json sorry

Espero se me entienda.

Última edición por bemitoreya; 01/12/2013 a las 19:09
  #8 (permalink)  
Antiguo 02/12/2013, 14:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

Creo que te estas complicando la vida... mira si esto no te sirve:

Código PHP:
Ver original
  1. $buscar = "4001";
  2. $data = '{
  3.    "result": {
  4.        "trabajo": true,
  5.        "datos": [
  6.              {
  7.                "id": "4000",
  8.                "date": "6/18/2012",
  9.                "idunico": "57954022"
  10.              },
  11.              {
  12.                "id": "4001",
  13.                "date": "5/11/2011",
  14.                "idunico": "57939700"
  15.                      },
  16.              {
  17.            
  18.                "id": "4003",
  19.                "date": "6/18/2012",
  20.                "idunico": "58516719"
  21.              },
  22.              {
  23.                "id": "4004",
  24.                "date": "5/11/2011",
  25.                "idunico": "57939754"
  26.              }
  27.              ]
  28.           }
  29. }';
  30.  
  31. function find($v){
  32.     global $buscar;
  33.     if( $v['id'] == $buscar ){
  34.         return true;
  35.     } else {
  36.         return false;
  37.     }
  38. }
  39.  
  40. $data = json_decode($data, true);
  41.  
  42. $datos = $data['result']['datos'];
  43.  
  44. $filtrado = current(array_filter($datos, "find"));
  45.  
  46. if( count($filtrado) > 0 ){ //si encontró el idunico
  47.     $result = $filtrado['idunico'];
  48. } else {
  49.     $result = 'No se encontraron coincidencias';
  50. }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 02/12/2013, 14:21
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: JSON escojer valor espesifico

Cita:
Iniciado por jonni09lo Ver Mensaje
Creo que te estas complicando la vida... mira si esto no te sirve:

Código PHP:
Ver original
  1. $buscar = "4001";
  2. $data = '{
  3.    "result": {
  4.        "trabajo": true,
  5.        "datos": [
  6.              {
  7.                "id": "4000",
  8.                "date": "6/18/2012",
  9.                "idunico": "57954022"
  10.              },
  11.              {
  12.                "id": "4001",
  13.                "date": "5/11/2011",
  14.                "idunico": "57939700"
  15.                      },
  16.              {
  17.            
  18.                "id": "4003",
  19.                "date": "6/18/2012",
  20.                "idunico": "58516719"
  21.              },
  22.              {
  23.                "id": "4004",
  24.                "date": "5/11/2011",
  25.                "idunico": "57939754"
  26.              }
  27.              ]
  28.           }
  29. }';
  30.  
  31. function find($v){
  32.     global $buscar;
  33.     if( $v['id'] == $buscar ){
  34.         return true;
  35.     } else {
  36.         return false;
  37.     }
  38. }
  39.  
  40. $data = json_decode($data, true);
  41.  
  42. $datos = $data['result']['datos'];
  43.  
  44. $filtrado = current(array_filter($datos, "find"));
  45.  
  46. if( count($filtrado) > 0 ){ //si encontró el idunico
  47.     $result = $filtrado['idunico'];
  48. } else {
  49.     $result = 'No se encontraron coincidencias';
  50. }

Saludos

el problema viene cuando intento usarlo con un bucle for asi:

Código PHP:
    $buscar "4001";
    
$data '{
       "result": {
           "trabajo": true,
           "datos": [
                 {
                   "id": "4000",
                   "date": "6/18/2012",
                   "idunico": "57954022"
                 },
                 {
                   "id": "4001",
                   "date": "5/11/2011",
                   "idunico": "57939700"
                         },
                 {
               
                   "id": "4003",
                   "date": "6/18/2012",
                   "idunico": "58516719"
                 },
                 {
                   "id": "4004",
                   "date": "5/11/2011",
                   "idunico": "57939754"
                 }
                 ]
              }
    }'
;
$tem 4004;


for (
$i=4000$i $tem $i++) {     
    function 
find($v){
        global 
$buscar,$i;
        if( 
$v['id'] == $i  ){
            return 
true;
        } else {
            return 
false;
        }
    }
     
    
$data json_decode($datatrue);
     
    
$datos $data['result']['datos'];
     
    
$filtrado current(array_filter($datos"find"));
     
    if( 
count($filtrado) > ){ //si encontró el idunico
        
$result $filtrado['idunico'];
    } else {
        
$result 'No se encontraron coincidencias';
    }
    
    echo 
$result;
    

me sale el este error:Fatal error: Cannot redeclare find() (previously declared in C:\AppServ\www\ejemplo\json.php:36) in C:\AppServ\www\ejemplo\json.php on line 36

alguna sugerencia
  #10 (permalink)  
Antiguo 02/12/2013, 14:25
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

Para que usas el ciclo for? no tiene ningun sentido, por qué crees que yo no usé ningun ciclo... solo has la prueba sin el for y verás que te funcionará

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 02/12/2013, 14:27
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: JSON escojer valor espesifico

Tienea que declarar la funcion antea del bucle, y dentro de eate la llamas
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #12 (permalink)  
Antiguo 02/12/2013, 14:31
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

Cita:
Iniciado por xSkArx Ver Mensaje
Tienea que declarar la funcion antea del bucle, y dentro de eate la llamas
No el bucle no tiene sentido, array_filter itera sobre cada elemento del array, así que el for lo único que hace es cargar innecesariamente el script. Además @bemitoreya no se puede redeclarar ninguna función en PHP; por ejemplo usar un ciclo y dentro de este declarar una función lo que hace es que por n veces que se repita el ciclo n veces se redeclarará la función.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #13 (permalink)  
Antiguo 02/12/2013, 14:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: JSON escojer valor espesifico

Cita:
Iniciado por jonni09lo Ver Mensaje
Para que usas el ciclo for? no tiene ningun sentido, por qué crees que yo no usé ningun ciclo... solo has la prueba sin el for y verás que te funcionará

Saludos


el ciclo for es para obtener todos los idunicos y aser una credencial

ejemplo mi resultado con el for seria asi

-----------------------------
id : 4000
date: 10/11/2013
idunico: 1586941654
------------------------------
------------------------------
id : 4002
date: 10/11/2013
idunico: 1586941654
------------------------------
------------------------------
id : 4003
date: 10/11/2013
idunico: 1586941654
------------------------------

esto es lo que nesecito
  #14 (permalink)  
Antiguo 02/12/2013, 14:36
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: JSON escojer valor espesifico

ahora si me perdí totalmente . Explicate muchacho.

Para que buscas un elemento?
Que vas a hacer con los elementos que no coincidan con la búsqueda
Que vas a hacer con el elemento que encontraste?
Que pasaria si no lo encuentras?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #15 (permalink)  
Antiguo 02/12/2013, 14:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: JSON escojer valor espesifico

Cita:
Iniciado por jonni09lo Ver Mensaje
ahora si me perdí totalmente . Explicate muchacho.

Para que buscas un elemento?
Que vas a hacer con los elementos que no coincidan con la búsqueda
Que vas a hacer con el elemento que encontraste?
Que pasaria si no lo encuentras?

Saludos
Para que buscas un elemento?
R= busco el elemento para que consida con el idunico

Que vas a hacer con los elementos que no coincidan con la búsqueda?
R= los que no coincidan con la busqueda se le generara un id generico como idunico
ejemplo $idgenerico = "123456";/// este seria el idunico si no encuentra coincide en la busqueda

Que vas a hacer con el elemento que encontraste?
R= los guardare en una basededatos

Que pasaria si no lo encuentras?
R= al no encontrase se le se le generara un id generico como idunico

Etiquetas: json, valor
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 00:39.