2

So my code here:

    $featurecollection = ("FeatureCollection");

        $test[] = array (
        "type" => $featurecollection,
        $features[] = array($images)

    );

   file_put_contents($cache,json_encode($test));

results in the following json:

[
 {
  "type":"feature",
  "0":[
     [
        {
           "title":"some title",
           "src":"value",
           "lat":"value",
           "lon":"value"
        },
        {
           "title":"some title",
             ...

But I need to nest things differently and I'm perplexed on how the php array should be constructed in order to get a result like:

{
"type":"FeatureCollection",
 "features":[

  {
     "type":"Feature",
     "geometry":{
        "coordinates":[
           -94.34885,
           39.35757
        ],
        "type":"Point"
     },
     "properties":{
        "latitude":39.35757,
        "title":"Kearney",
        "id":919,
        "description":"I REALLY need new #converse, lol. I've had these for three years. So #destroyed ! :( Oh well. Can't wait to get a new pair and put my #rainbow laces through. #gay #gaypride #bi #proud #pride #colors #shoes #allstar #supporting ",
        "longitude":-94.34885,
        "user":"trena1echo5",
        "image":"http://images.instagram.com/media/2011/09/09/ddeb9bb508c94f2b8ff848a2d2cd3ece_7.jpg",
        "instagram_id":211443415
     }
  },

What would the php array look like for that? I'm thrown off by the way everything is nested but still has a key value.

1
  • I think you just need to replace $features[] = array($images) with 'features' => array($images), though I'm pretty n00b w/PHP... Commented Apr 15, 2012 at 19:25

2 Answers 2

3

Here's how I'd represent that in PHP:

array(
    'type' => 'FeatureCollection',
    'features' => array(
        array(
            'type' => 'Feature',
            'geometry' => array(
                'coordinates' => array(-94.34885, 39.35757),
                'type' => 'Point'
            ), // geometry
            'properties' => array(
                // latitude, longitude, id etc.
            ) // properties
        ), // end of first feature
        array( ... ), // etc.
    ) // features
)

So to get that structure, each feature has to be an associative array of:

  • type,
  • geometry - an associative array of:
    • coordinates - an indexed array of values,
    • type
  • properties - an associative array of values like latitude, longitude, id etc.

It's times like these when I prefer languages that distinguish between lists (array(1, 2, 3)) and dictionaries or maps (array('a' => 1, 'b' => 2)).

Sign up to request clarification or add additional context in comments.

2 Comments

Okay so how do I loop through those variables (to create multiple features)? I get how to build this array and then encode it to json, I'm just stumped on how to build it with multiple instances.
Where are you getting your data from (and in what structure)? I'd create a new question with this info to get faster responses :)
0

With PHP 5.4 and above:

$array = [
    'type' => 'FeatureCollection',
    'features' => [
        [
            'type' => 'Feature',
            'geometry' => [
                'coordinates' => [-94.34885, 39.35757],
                'type' => 'Point'
            ], // geometry
            'properties' => [
                // latitude, longitude, id etc.
            ] // properties
        ], // end of first feature
        [] // another feature, and so on
    ] // end of features
];

For the PHP script below:

<?php
header('Content-type=> application/json');
echo json_encode($array);

This is the JSON output;

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "coordinates": [
          -94.34885,
          39.35757
        ],
        "type": "Point"
      },
      "properties": []
    },
    []
  ]
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.