cari

Rumah  >  Soal Jawab  >  teks badan

Menggulung objek PHP menggunakan kekunci dinamik: panduan langkah demi langkah

Saya cuba menghuraikan fail JSON menggunakan PHP. Tapi sekarang saya buntu.

Ini ialah kandungan fail JSON saya:

{
    "John": {
        "status":"Wait"
    },
    "Jennifer": {
        "status":"Active"
    },
    "James": {
        "status":"Active",
        "age":56,
        "count":10,
        "progress":0.0029857,
        "bad":0
    }
}

Ini yang saya cuba setakat ini:

<?php

$string = file_get_contents("/home/michael/test.json");
$json_a = json_decode($string, true);

echo $json_a['John'][status];
echo $json_a['Jennifer'][status];

Tetapi memandangkan saya tidak tahu nama (cth. 'John''Jennifer')以及所有可用的键和值(例如 'age''count') terlebih dahulu, saya rasa saya perlu mencipta beberapa gelung foreach.

Saya harap ada contoh.

P粉312195700P粉312195700431 hari yang lalu644

membalas semua(2)saya akan balas

  • P粉920199761

    P粉9201997612023-10-11 07:17:05

    Saya tidak percaya begitu ramai orang menyiarkan jawapan tanpa membaca JSON dengan betul.

    Jika anda mengulang secara berasingan $json_a,你就会得到一个对象的对象。即使您传入 true sebagai parameter kedua, anda juga mempunyai tatasusunan 2D. Jika anda menggelung pada dimensi pertama, anda tidak boleh menggemakan dimensi kedua seperti ini. Jadi ini salah:

    foreach ($json_a as $k => $v) {
       echo $k, ' : ', $v;
    }

    Untuk menggemakan status semua orang, cuba ini:

     $person_a) {
        echo $person_a['status'];
    }
    
    ?>

    balas
    0
  • P粉668019339

    P粉6680193392023-10-11 07:17:05

    Untuk mengulangi tatasusunan berbilang dimensi, anda boleh menggunakan RecursiveArrayIterator< /p>

    $jsonIterator = new RecursiveIteratorIterator(
        new RecursiveArrayIterator(json_decode($json, TRUE)),
        RecursiveIteratorIterator::SELF_FIRST);
    
    foreach ($jsonIterator as $key => $val) {
        if(is_array($val)) {
            echo "$key:\n";
        } else {
            echo "$key => $val\n";
        }
    }

    Keluaran:

    John:
    status => Wait
    Jennifer:
    status => Active
    James:
    status => Active
    age => 56
    count => 10
    progress => 0.0029857
    bad => 0

    Jalankan pada papan kekunci

    balas
    0
  • Batalbalas