devnull
devnull

Reputation: 2872

looping through multi dimension array

I am parsing A JSON file in PHP using PHP Decode

$json= file_get_contents ("resultate.json");


$json = json_decode($json, true);

and then I am trying to loop through the results and display them

 foreach($json as $zh){


$name = $zh[0]["VORLAGEN"][0]["JA_PROZENT"];
$JA = $zh[0]["VORLAGEN"][0]["VORLAGE_NAME"];
$kreis = $zh[0]["NAME"];
$kreis1 = $zh[22]["NAME"];




 echo $name;
 echo $JA;
 echo $kreis;
 echo $kreis1;
    ...}

but I receive only one element e.g. position 0 or position 22. I would like to receive all the results and display them in a list. Below you can see the array

Array
(
    [GEBIETE] => Array
        (
            [0] => Array
                (
                    [VORLAGEN] => Array
                        (
                            [0] => Array
                                (
                                    [VORLAGE_NAME] => Kantonale Volksabstimmung über die Vorlage Steuergesetz (StG) (Änderung vom 1. April 2019; Steuervorlage 17)
                                    [JA_STIMMEN_ABSOLUT] => 205
                                    [STIMMBETEILIGUNG] => 28.11
                                    [NEIN_STIMMEN_ABSOLUT] => 183
                                    [VORLAGE_ID] => 2491
                                    [JA_PROZENT] => 52.84
                                )

                        )

                    [NAME] => Aeugst a.A.
                    [WAHLKREIS] => 0
                    [BFS] => 1
                )

            [1] => Array
                (
                    [VORLAGEN] => Array
                        (
                            [0] => Array
                                (
                                    [VORLAGE_NAME] => Kantonale Volksabstimmung über die Vorlage Steuergesetz (StG) (Änderung vom 1. April 2019; Steuervorlage 17)
                                    [JA_STIMMEN_ABSOLUT] => 1000
                                    [STIMMBETEILIGUNG] => 26.15
                                    [NEIN_STIMMEN_ABSOLUT] => 851
                                    [VORLAGE_ID] => 2491
                                    [JA_PROZENT] => 54.02
                                )

                        )

                    [NAME] => Affoltern a.A.
                    [WAHLKREIS] => 0
                    [BFS] => 2
                )

            [2] => Array
                (
                    [VORLAGEN] => Array
                        (
                            [0] => Array
                                (
                                    [VORLAGE_NAME] => Kantonale Volksabstimmung über die Vorlage Steuergesetz (StG) (Änderung vom 1. April 2019; Steuervorlage 17)
                                    [JA_STIMMEN_ABSOLUT] => 661
                                    [STIMMBETEILIGUNG] => 30.98
                                    [NEIN_STIMMEN_ABSOLUT] => 454
                                    [VORLAGE_ID] => 2491
                                    [JA_PROZENT] => 59.28
                                )

                        )

                    [NAME] => Bonstetten
                    [WAHLKREIS] => 0
                    [BFS] => 3
                )

can you please tell me how to print all the elements of this array?

Upvotes: 0

Views: 47

Answers (2)

LF-DevJourney
LF-DevJourney

Reputation: 28524

There is GEBIETE layer in your json, so change foreach($json as $zh) to foreach($json["GEBIETE"] as $zh) will works.

Upvotes: 1

jake2389
jake2389

Reputation: 1174

You can nest multiple foreach:

$root = $json['GEBIETE'];

foreach ($root as $elem) {
    foreach ($elem as $key => $value) {
        // VORLAGEN is an array of its own so if you want to print the keys you should foreach this value as well
        if(is_array($value)) {
            foreach ($value[0] as $k => $v) {
                echo $k."\t".$v;
            }
        }
        else {
            echo $value;
        }
    }
}

Upvotes: 0

Related Questions