Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  JSON and PHP (decode) märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
Dev Grex
HV Guru

liitunud: 29.07.2012



Autoriseeritud ID-kaardiga

sõnum 19.06.2016 23:47:54 JSON and PHP (decode) vasta tsitaadiga

Hei

Oleks vaja natuke abi. Vajalik on väljastada andmed vastavalt 'name' atribuudile. Hetkel 'something3' väärtust kuvan nii:

$value = $json->stats->stats[2]->value;


See ei paista eriti usaldusväärne ja oleks soov kuvada väärtus mitte järjekorra numbri järgi, vaid selle järgi mis on name lahtris. Põhimõtteliselt soovin lahendada seda kuidagi nii:

$value = $json->stats->stats[something3]->value;


Tean, et nii seda ei tehta. Püüdsin leida abi erinevatelt saitidelt, kuid kuna ei osanud probleemi õigesti lahti kirjutada, siis abi ei leidnud.

JSON:

{
   "stats": {
      "ID": "16561198023364040",
      "Name": "TestApp260",
      "stats": [
         {
            "name": "something1",
            "value": 32835
         },
         {
            "name": "something2",
            "value": 31956
         },
         {
            "name": "something3",
            "value": 2189656
         }


Oskab keegi tark mind juhendada või sõna sekka öelda? Oleksin väga tänulik.
Kommentaarid: 343 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 293
tagasi üles
vaata kasutaja infot saada privaatsõnum
riaak
HV Guru
riaak

liitunud: 22.09.2002



Autoriseeritud ID-kaardiga

sõnum 19.06.2016 23:51:04 vasta tsitaadiga

http://stackoverflow.com/questions/4731242/php-loop-through-json-array

Käid element haaval läbi ning kontrollid "name" väärtust.

_________________
¯\_(ツ)_/¯
Kommentaarid: 118 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 104
tagasi üles
vaata kasutaja infot saada privaatsõnum
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 19.06.2016 23:59:00 vasta tsitaadiga

Tegin natuke koodi ka siis juba:
1 variant:

$value = '';
foreach($json->stats->stats as $k=> $item){
  if($item->name == 'something3'){
    $value = $item->value;
  }
}



Teine variant funktsiooniga (võimalus ka saada need muud väärtused kätte):
$value = get_value_via_name_attribute( $json->stats->stats, 'something3', '' );


function get_value_via_name_attribute( $stat, $keyName, $default ){
 
  foreach($stat as $k=> $item){
    if($item->name == $keyName){
      return $item->value;
    }
  }
 
  return $default;
}


viimati muutis iceincube 20.06.2016 09:08:52, muudetud 1 kord
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
LKits
HV Guru
LKits

liitunud: 06.09.2007




sõnum 20.06.2016 09:03:50 vasta tsitaadiga

Oot, aga kui sa ei sisesta päringus ID-d, siis kust kohast programmike teab, mis ID-d (ja alamelemente) soovid lugeda?

Sest kui olen õigesti aru saanud, siis ID on sul unikaalne ehk siis, kui soovid "something3" lugeda, pead sisestama ka ID.
Kui soovid lugeda kõikide ID-de "something3", siis pead lihtsalt läbi loop-ima.

EDIT: Või kui sul ainult üks ID ongi, siis unusta ära mu jutt.
Aga jah, eelnevad postitused annavad ülevaate, kuidas läbi loop-ida.

_________________
itLahendused - Arvutite remont ja hooldus, veebilehtede loomine, soodne veebimajutus. Võta ühendust! Tel: +372 555 268 97 ja e-post info@itlahendused.ee
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Dev Grex
HV Guru

liitunud: 29.07.2012



Autoriseeritud ID-kaardiga

sõnum 20.06.2016 12:06:16 vasta tsitaadiga

LKits kirjutas:
Oot, aga kui sa ei sisesta päringus ID-d, siis kust kohast programmike teab, mis ID-d (ja alamelemente) soovid lugeda?

Sest kui olen õigesti aru saanud, siis ID on sul unikaalne ehk siis, kui soovid "something3" lugeda, pead sisestama ka ID.
Kui soovid lugeda kõikide ID-de "something3", siis pead lihtsalt läbi loop-ima.

EDIT: Või kui sul ainult üks ID ongi, siis unusta ära mu jutt.
Aga jah, eelnevad postitused annavad ülevaate, kuidas läbi loop-ida.

Tegemist on API'ga. Igal API omanikul on oma ID, ehk siis jah, ID on koguaeg ainult üks ja see sama.

riaak kirjutas:
http://stackoverflow.com/questions/4731242/php-loop-through-json-array

Käid element haaval läbi ning kontrollid "name" väärtust.

Tänud, alustuseks oligi just see mis vaja thumbs_up.gif

iceincube kirjutas:
Tegin natuke koodi ka siis juba:
1 variant:

$value = '';
foreach($json->stats->stats as $k=> $item){
  if($item->name == 'something3'){
    $value = $item->value;
  }
}



Käiku läks esimene variant, kuna lihtsuses peitub võlu. Tekkis ainult küsimus, et kas on ilmtingimata vaja alguses määrata Value muutujale tühi sõne?

Suured tänud kõigile kaasamõtlejatele. Alustasin alles eile JSON võimaluste uurimist ja täna on juba kõik vajalik üleval. Super thumbs_up.gif
Kommentaarid: 343 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 293
tagasi üles
vaata kasutaja infot saada privaatsõnum
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 20.06.2016 12:19:07 vasta tsitaadiga

Ei ole vaja tegelikult. See on mul nn default value puhuks kui ei leia vastet.
Kommentaarid: 39 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 37
tagasi üles
vaata kasutaja infot saada privaatsõnum
Dev Grex
HV Guru

liitunud: 29.07.2012



Autoriseeritud ID-kaardiga

sõnum 20.06.2016 14:19:11 vasta tsitaadiga

iceincube kirjutas:
Ei ole vaja tegelikult. See on mul nn default value puhuks kui ei leia vastet.

Selge. Suured tänud thumbs_up.gif thumbs_up.gif
Kommentaarid: 343 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 293
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  JSON and PHP (decode)
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.