Quite a newbie in this area so forgive me if my terminology is incorrect. I have been working with the Linked in API and have manages to get a JSON format returned. Like so:
"skills": {
"_total": 5,
"values": [
{
"id": 1,
"skill": {"name": "British Sign Language"}
},
{
"id": 7,
"skill": {"name": "Drupal"}
},
{
"id": 8,
"skill": {"name": "WordPress"}
},
{
"id": 9,
"skill": {"name": "iOS development"}
},
{
"id": 10,
"skill": {"name": "Magento"}
}
]
}
I need to add each one of these into an array and then add them to a database. I tried decoding the JSON like so:
$linkedInResults = json_decode($JSON_response, true);
and then tried to add them to an array like this:
$arr_skills = array();
foreach ($linkedInResults->skills as $addSkill) {
$arr_skills[] = $addSkill;
}
var_dump($arr_skills);
However I just get this error:
Warning: Invalid argument supplied for foreach()
and the output of the var dump is:
array(0) { }
EDIT: using: $linkedInResults['skills'] gives:
array(2) {
[0] => int(13)[1] => array(13) {
[0] => array(2) {
["id"] => int(1)["skill"] => array(1) {
["name"] => string(21)
"British Sign Language"
}
}[1] => array(2) {
["id"] => int(7)["skill"] => array(1) {
["name"] => string(6)
"Drupal"
}
}[2] => array(2) {
["id"] => int(8)["skill"] => array(1) {
["name"] => string(9)
"WordPress"
}
}[3] => array(2) {
["id"] => int(9)["skill"] => array(1) {
["name"] => string(15)
"iOS development"
}
}[4] => array(2) {
["id"] => int(10)["skill"] => array(1) {
["name"] => string(7)
"Magento"
}
}[5] => array(2) {
["id"] => int(11)["skill"] => array(1) {
["name"] => string(10)
"Web Design"
}
}[6] => array(2) {
["id"] => int(12)["skill"] => array(1) {
["name"] => string(8)
"Blogging"
}
}[7] => array(2) {
["id"] => int(13)["skill"] => array(1) {
["name"] => string(30)
"iPhone Application Development"
}
}[8] => array(2) {
["id"] => int(14)["skill"] => array(1) {
["name"] => string(6)
"HTML 5"
}
}[9] => array(2) {
["id"] => int(15)["skill"] => array(1) {
["name"] => string(6)
"jQuery"
}
}[10] => array(2) {
["id"] => int(16)["skill"] => array(1) {
["name"] => string(5)
"XHTML"
}
}[11] => array(2) {
["id"] => int(17)["skill"] => array(1) {
["name"] => string(3)
"CSS"
}
}
}
}
EDIT: Here is the var_dump after the foreach $linkedInResults['skills']['values']:
// Just a sample as its quite long
array(13) {
[0]=>
array(2) {
["id"]=>
int(1)
["skill"]=>
array(1) {
["name"]=>
string(21) "British Sign Language"
}
}
[1]=>
array(2) {
["id"]=>
int(7)
["skill"]=>
array(1) {
["name"]=>
string(6) "Drupal"
}
}
[2]=>
array(2) {
["id"]=>
int(8)
["skill"]=>
array(1) {
["name"]=>
string(9) "WordPress"
}
}
[3]=>
array(2) {
["id"]=>
int(9)
["skill"]=>
array(1) {
["name"]=>
string(15) "iOS development"
}
}
[4]=>
array(2) {
["id"]=>
int(10)
["skill"]=>
array(1) {
["name"]=>
string(7) "Magento"
}
}
[5]=>
array(2) {
["id"]=>
int(11)
["skill"]=>
array(1) {
["name"]=>
string(10) "Web Design"
}
}
How do I get all the values for "name" only and add them into an array?
You need to foreach
over an array. In your example, the only thing that is an array is $linkedInResults['skills']['values']
.
Then from there, you can get each of their names.
$arr_skills = array();
foreach($linkedInResults['skills']['values'] as $addSkill){
$arr_skills[] = $addSkill['skill']['name'];
}