2017-05-30 2 views
0

Ma chaîne JSON:Comment compter les sous-chaînes spécifiques en JSON

{ 
    "nearby_drivers": [ 
    { 
     "drivers": [ 
     { 
      "locations": [ 
      { 
       "lat": 38.670808, 
       "lng": -121.49624 
      }, 
      ] 
     }, 
     { 
      "locations": [ 
      { 
       "lat": 38.625728, 
       "lng": -121.514559 
      }, 
      ] 
     } 
     ], 
     "ride_type": "lyft" 
    } 
    ] 
} 

Ce que je suis en train de faire est d'obtenir un nombre total pour les paires (lat, lng) en php. J'ai eu du succès en comptant 1 lat ou 1 lng. Mais je ne suis pas sûr de savoir comment faire les deux. Peut-il être fait? Merci pour votre temps.

+0

d'abord le convertir en un objet avec json_decode, array_filter alors ou array_reduce ferait l'astuce. – mkaatman

+0

Veuillez indiquer votre résultat attendu pour votre entrée d'échantillon affichée. S'il y a des cas marginaux à considérer, veuillez ajouter ces exemples d'intrants et votre résultat attendu. – mickmackusa

Répondre

0

Je dis rester simple et faire juste un nombre de chaînes sans aucune conversion de type:

$input='{ 
    "nearby_drivers": [ 
    { 
     "drivers": [ 
     { 
      "locations": [ 
      { 
       "lat": 38.670808, 
       "lng": -121.49624 
      }, 
      ] 
     }, 
     { 
      "locations": [ 
      { 
       "lat": 38.625728, 
       "lng": -121.514559 
      }, 
      ] 
     } 
     ], 
     "ride_type": "lyft" 
    } 
    ] 
}'; 

echo "lat count = ",substr_count($input,'"lat"'),"<br>"; 
echo "lng count = ",substr_count($input,'"lng"'); 

Sortie:

lat count = 2 
lng count = 2 
+0

Puis encore une fois si vous avez besoin de compter les paires littéralement (comme l'un d'entre eux pourrait être seul), cela pourrait être réalisé avec regex. – mickmackusa

+0

bien fait, merci. –