Ver Mensaje Individual
  #9 (permalink)  
Antiguo 02/12/2013, 14:21
bemitoreya
 
Fecha de Ingreso: marzo-2010
Mensajes: 50
Antigüedad: 14 años, 2 meses
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