0

I have a simple bit of JSON like this:

{
  "grinning": {
    "unicode": "1f600",
    "unicode_alternates": "",
    "name": "grinning face",
    "shortname": ":grinning:",
    "category": "people",
    "emoji_order": "1",
    "aliases": [

    ],
    "aliases_ascii": [

    ],
    "keywords": [
      "happy",
      "joy",
      "smile",
      "grin",
      "smiling",
      "smiley",
      "person"
    ]
  },
  "grimacing": {
    "unicode": "1f62c",
    "unicode_alternates": "",
    "name": "grimacing face",
    "shortname": ":grimacing:",
    "category": "people",
    "emoji_order": "2",
    "aliases": [

    ],
    "aliases_ascii": [

    ],
    "keywords": [
      "teeth",
      "grimace",
      "disapprove",
      "pain",
      "person"
    ]
  }
}

I can access the "unicode" and "name" elements via:

<?php
$str = file_get_contents('http://localhost/_testing/emoji/emoj1-test.json');

$json_a = json_decode($str, true);

foreach($json_a as $key => $val) {
    echo $val['unicode'];
    echo $val['name'];
}
?>

But I can't work out how I can get the "keywords" nested array into a variable containg the keywords held as a comma separated list of values.

I simplistically tried:

echo $val['keywords'];

But because that's an array, it returns this error:

Notice: Array to string conversion

I then tried:

echo $val['keywords'][0];

Which I think is along the right lines, but still doesn't return any data.

3 Answers 3

4

echo implode(',', $val['keywords']);

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

1 Comment

Perfect! Thanks. Will accept as answer in 10 mins, I can't do it until then due to restrictions on my account.
1

Try with join,

foreach($json_a as $key => $val){
    echo join(", ", $val['keywords']);
}

Comments

0

The following works up to 2 levels of nesting. You can iterate and print the entire nested array with it.

<?php
$arr = ['Your JSON'];
foreach ($arr as $key => $value) {
    $string = is_array($value) ? implode(",", $value) : $value;
    echo $string;
}
?>

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.