0

I am going to eventually use Google Charts using a geochart map (a map of the world) to display campaign contribution data by US state. It will be using the OpenFEC API. I have a complex JSON in my code below. It is converted into an array in my code.

{
    "api_version": "1.0",
    "pagination": {
        "pages": 145,
        "count": 2888,
        "page": 1,
        "per_page": 20
    },
    "results": [{
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 152306310.0,
        "election_year": 2016,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00000002",
        "contribution_receipt_amount": 114485560.0,
        "election_year": 2016,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 101453159.0,
        "election_year": 2020,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00003392",
        "contribution_receipt_amount": 93681171.0,
        "election_year": 2016,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 91292718.0,
        "election_year": 2016,
        "contribution_state": "NY"
    }, {
        "candidate_id": "P00000002",
        "contribution_receipt_amount": 83166303.0,
        "election_year": 2020,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 75857465.0,
        "election_year": 2016,
        "contribution_state": "TX"
    }, {
        "candidate_id": "P00000002",
        "contribution_receipt_amount": 73221182.0,
        "election_year": 2016,
        "contribution_state": "NY"
    }, {
        "candidate_id": "P00003392",
        "contribution_receipt_amount": 64565396.0,
        "election_year": 2016,
        "contribution_state": "NY"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 58095188.0,
        "election_year": 2016,
        "contribution_state": "FL"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 53329034.0,
        "election_year": 2020,
        "contribution_state": "NY"
    }, {
        "candidate_id": "P00000003",
        "contribution_receipt_amount": 49070876.0,
        "election_year": 2016,
        "contribution_state": "TX"
    }, {
        "candidate_id": "P00000002",
        "contribution_receipt_amount": 46239554.0,
        "election_year": 2020,
        "contribution_state": "NY"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 36885690.0,
        "election_year": 2020,
        "contribution_state": "TX"
    }, {
        "candidate_id": "P00000003",
        "contribution_receipt_amount": 36453786.0,
        "election_year": 2016,
        "contribution_state": "CA"
    }, {
        "candidate_id": "P00000003",
        "contribution_receipt_amount": 32225392.0,
        "election_year": 2016,
        "contribution_state": "FL"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 31390178.0,
        "election_year": 2016,
        "contribution_state": "MA"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 29632239.0,
        "election_year": 2020,
        "contribution_state": "FL"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 28630861.0,
        "election_year": 2016,
        "contribution_state": "VA"
    }, {
        "candidate_id": "P00000001",
        "contribution_receipt_amount": 28438374.0,
        "election_year": 2016,
        "contribution_state": "IL"
    }]
}

What I do need to access in my array is one inner array at a time inside the key "results", which would be something like:

{"candidate_id":"P00000001",
 "contribution_state":"CA",
 "election_year":2016,
 "contribution_receipt_amount":152306310.0
}

And I do not need to loop through this. I have to go each individual array in the results key because I will eventually put a marker on a map of the US (I will learn about that later on Google's Geochart example).

What I am trying to do for now is to at least echo the values in this: {"candidate_id":"P00000001","contribution_state":"CA","election_year":2016,"contribution_receipt_amount":152306310.0}

How do I access a line like that? This is a complex array. The only part of the array I knew how to access was: echo $results[0]['api_version'];

<!DOCTYPE HTML>
<html>

<?php

$json = '[{"api_version":"1.0","pagination":{"per_page":20,"page":1,"count":2888,"pages":145},"results":[{"candidate_id":"P00000001","contribution_state":"CA","election_year":2016,"contribution_receipt_amount":152306310.0},{"candidate_id":"P00000002","contribution_state":"CA","election_year":2016,"contribution_receipt_amount":114485560.0},{"candidate_id":"P00000001","contribution_state":"CA","election_year":2020,"contribution_receipt_amount":101453159.0},{"candidate_id":"P00003392","contribution_state":"CA","election_year":2016,"contribution_receipt_amount":93681171.0},{"candidate_id":"P00000001","contribution_state":"NY","election_year":2016,"contribution_receipt_amount":91292718.0},{"candidate_id":"P00000002","contribution_state":"CA","election_year":2020,"contribution_receipt_amount":83166303.0},{"candidate_id":"P00000001","contribution_state":"TX","election_year":2016,"contribution_receipt_amount":75857465.0},{"candidate_id":"P00000002","contribution_state":"NY","election_year":2016,"contribution_receipt_amount":73221182.0},{"candidate_id":"P00003392","contribution_state":"NY","election_year":2016,"contribution_receipt_amount":64565396.0},{"candidate_id":"P00000001","contribution_state":"FL","election_year":2016,"contribution_receipt_amount":58095188.0},{"candidate_id":"P00000001","contribution_state":"NY","election_year":2020,"contribution_receipt_amount":53329034.0},{"candidate_id":"P00000003","contribution_state":"TX","election_year":2016,"contribution_receipt_amount":49070876.0},{"candidate_id":"P00000002","contribution_state":"NY","election_year":2020,"contribution_receipt_amount":46239554.0},{"candidate_id":"P00000001","contribution_state":"TX","election_year":2020,"contribution_receipt_amount":36885690.0},{"candidate_id":"P00000003","contribution_state":"CA","election_year":2016,"contribution_receipt_amount":36453786.0},{"candidate_id":"P00000003","contribution_state":"FL","election_year":2016,"contribution_receipt_amount":32225392.0},{"candidate_id":"P00000001","contribution_state":"MA","election_year":2016,"contribution_receipt_amount":31390178.0},{"candidate_id":"P00000001","contribution_state":"FL","election_year":2020,"contribution_receipt_amount":29632239.0},{"candidate_id":"P00000001","contribution_state":"VA","election_year":2016,"contribution_receipt_amount":28630861.0},{"candidate_id":"P00000001","contribution_state":"IL","election_year":2016,"contribution_receipt_amount":28438374.0}]}]';
$results = json_decode($json, true);
// numeric/associative array access

echo $results[0]['api_version'];
?>

</html>
Barmar
  • 741,623
  • 53
  • 500
  • 612
Rashter
  • 3
  • 4
  • Should your API key be made public? Might be wise to delete your post – Scuzzy Apr 17 '20 at 00:40
  • @Scuzzy We will be using a separate one. I made that one in case I need to ask anything on StackOverflow. – Rashter Apr 17 '20 at 00:51
  • 1
    What do you mean by "I do not need to loop through this"? How are you going to do something with each individual element without looping? – Barmar Apr 17 '20 at 01:00
  • 1
    `$results` is an associative array, it's just `$results['api_version']`. The indexed array is in `$results['results']` – Barmar Apr 17 '20 at 01:02

0 Answers0