Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: zadání klíče v poli jako proměnné

Aktivity
Avatar
David Šabacký:10.6.2021 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.6.2021 21:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.6.2021 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.6.2021 7:50
 
Nahoru Odpovědět
11.6.2021 7:49
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.6.2021 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.6.2021 7:54
Avatar
Odpovídá na Peter Mlich
David Šabacký:11.6.2021 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.6.2021 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.