Nauč se s námi víc. Využij 50% bonus na e-learningové kurzy.
Pouze tento týden sleva až 80 % na e-learning týkající se Javy
Avatar
David Šabacký:10. června 21:26

Ahoj všem,

mám dotaz a prosil bych o pomoc.

Mám pole $json_string a v druhé úrovni, pokud klíč obsahuje slovo mmsi, potřebuju dostat hodnotu longitude .
Z tohoto důvodu jsem si napsal smyčku a následně podmínku, která v případě, že klíč v 2. úrovni obsahuje "mmsi", mělo by se naplnit proměnná $aislon touto hodnotu.

Problém je, že nemohu přijít na to, jak do indexu pole zapsat hodnotu z proměnné, patrně je to jen v syntaxi, ale prostě na to nemůžu přijít.

Moc díky za jakoukoliv pomoc.

Zkusil jsem: foreach($json_st­ring['vessels'] as $key => $val) {

if (strpos($key, 'mmsi') !== false) {
$aislon=$json_st­ring['vessels']["$ke­y"]['navigati­on']['position']['va­lue']['longitu­de'];
echo $key.",".$ais­lon."\r\n";

};
};

Chci docílit: tohle je jeden zápis z toho pole:
['vessels']['ur­n:mrn:imo:mmsi:3191­90100']['navi­gation']['posi­tion']['value']['lon­gitude']

a urn:mrn:imo:mmsi:3191­90100 se mění.

 
Odpovědět
10. června 21:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. června 7:49

Pozn. Pro kod pouzivej znacky pro code, tlacitko editoru

</>

Jen jsem to mirne prepsal. Ale, podle mne to mas ok.

<?php
// ['vessels']['urn:mrn:imo:mmsi:319190100']['navigation']['position']['value']['longitude']
foreach ($json_string['vessels'] as $key => $val)
    {
    if (strpos($key, 'mmsi') !== false)
        {
        $aislon = $val['navigation']['position']['value']['longitude']; // muzes pouzit $val; ["$key"] se da napsat jako [$key]
        echo " $key, $aislon \r\n ";
        var_dump( $key, $aislon ); echo '<br>'; // jiny zpusob vypsani
        } // nemusi byt strednik
    } // nemusi byt strednik
?>

"do indexu pole zapsat hodnotu z proměnné"
Nerozumim, zatim se mi to jevi ok. Zkus pridat dalsi kod. Jak vypada treba ten json nebo, jakym zpusobem ho parsujes?
Takhle, pokud zadas

var_dump( $json_string['vessels']['urn:mrn:imo:mmsi:319190100']['navigation']['position']['value']['longitude']);

... tak se vypise hodnota promenne? Pokud jo, tak by to mohlo fungovat, pokud take neco neprehlizim v kodu :)
Jde o to, ze v manualu mas vice moznosti, jakym se to zparsuje se string do json. Jestli to teda nejak parsujes.

<?php
// https://www.php.net/manual/en/function.json-decode.php - doporucuji si k funkcim, ktere neznas, zkoukavat online dokumentaci

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json)); // var_dump( $json->a ); var_dump( $json->{'a'} );
var_dump(json_decode($json, true)); // var_dump( $json['vessels'] );

?>
Editováno 11. června 7:50
 
Nahoru Odpovědět
11. června 7:49
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11. června 7:54

Pouzivas error_reporting? Protoze php vypisuje chyby, kdyz se k nejake promenne nedostane. A z ni se da poznat, v cem je problem. Tu si mohl sem taky napsat.

 
Nahoru Odpovědět
11. června 7:54
Avatar
Odpovídá na Peter Mlich
David Šabacký:11. června 8:35

Ahoj,

moc díky, nakonec jsem to měl správně. Chyba byla mezi klávesnicí a židlí.

I tak moc díky za rady.

 
Nahoru Odpovědět
11. června 8:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.