Considering you have json_decode
d you data this way :
$data = json_decode($json);
You can use var_dump
(well, it’s output looks way better if used with the Xdebug extension, which is nice to have on a development machine, btw) to know what’s in your data :
// Allows you to know what's in the data ;-)
var_dump($data);
You’ll get something like this :
object(stdClass)[1]
public 'communications' =>
object(stdClass)[2]
public 'communication' =>
array
0 =>
object(stdClass)[3]
public '@array' => string 'true' (length=4)
public '@id' => string '23101384' (length=8)
public '@uri' => string 'xyz/v1/Communications/1111' (length=26)
public 'household' =>
object(stdClass)[4]
public '@id' => string '111111' (length=6)
public '@uri' => string 'xyz/v1/Households/5465465' (length=25)
public 'person' =>
object(stdClass)[5]
public '@id' => string '' (length=0)
public '@uri' => string '' (length=0)
public 'communicationType' =>
object(stdClass)[6]
public '@id' => string '1' (length=1)
public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/1' (length=42)
public 'name' => string 'Home Phone' (length=10)
public 'communicationGeneralType' => string 'Telephone' (length=9)
public 'communicationValue' => string '1111' (length=4)
public 'searchCommunicationValue' => string '2693240758' (length=10)
public 'listed' => string 'true' (length=4)
public 'communicationComment' => null
public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
1 =>
object(stdClass)[7]
public '@array' => string 'true' (length=4)
public '@id' => string '11111' (length=5)
public '@uri' => string 'xyz/v1/Communications/111111111' (length=31)
public 'household' =>
object(stdClass)[8]
public '@id' => string '14436295' (length=8)
public '@uri' => string 'xyz/v1/Households/11111' (length=23)
public 'person' =>
object(stdClass)[9]
public '@id' => string '2222222' (length=7)
public '@uri' => string 'xyz/v1/People/22222222' (length=22)
public 'communicationType' =>
object(stdClass)[10]
public '@id' => string '2' (length=1)
public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/2' (length=42)
public 'name' => string 'Work Phone' (length=10)
public 'communicationGeneralType' => string 'Telephone' (length=9)
public 'communicationValue' => string '11111' (length=5)
public 'searchCommunicationValue' => string '789787987' (length=9)
public 'listed' => string 'false' (length=5)
public 'communicationComment' => null
public 'createdDate' => string '2009-08-09T15:49:27' (length=19)
public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
2 =>
object(stdClass)[11]
public '@array' => string 'true' (length=4)
public '@id' => string '11111' (length=5)
public '@uri' => string 'xyz/v1/Communications/11111' (length=27)
public 'household' =>
object(stdClass)[12]
public '@id' => string '1111' (length=4)
public '@uri' => string 'xyz/v1/Households/1111' (length=22)
public 'person' =>
object(stdClass)[13]
public '@id' => string '244404' (length=6)
public '@uri' => string 'xyz/v1/People/1111' (length=18)
public 'communicationType' =>
object(stdClass)[14]
public '@id' => string '3' (length=1)
public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/3' (length=42)
public 'name' => string 'Mobile' (length=6)
public 'communicationGeneralType' => string 'Telephone' (length=9)
public 'communicationValue' => string '22222' (length=5)
public 'searchCommunicationValue' => string '5475454' (length=7)
public 'listed' => string 'true' (length=4)
public 'communicationComment' => null
public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
public 'lastUpdatedDate' => string '2009-08-11T23:40:02' (length=19)
3 =>
object(stdClass)[15]
public '@array' => string 'true' (length=4)
public '@id' => string '15454' (length=5)
public '@uri' => string 'xyz/v1/Communications/111111' (length=28)
public 'household' =>
object(stdClass)[16]
public '@id' => string '14436295' (length=8)
public '@uri' => string 'xyz/v1/Households/1111' (length=22)
public 'person' =>
object(stdClass)[17]
public '@id' => string '244444474' (length=9)
public '@uri' => string 'xyz/v1/People/111111' (length=20)
public 'communicationType' =>
object(stdClass)[18]
public '@id' => string '4' (length=1)
public '@uri' => string 'xyz/v1/Communications/CommunicationTypes/4' (length=42)
public 'name' => string 'Email' (length=5)
public 'communicationGeneralType' => string 'Email' (length=5)
public 'communicationValue' => string '[email protected]' (length=18)
public 'searchCommunicationValue' => string '[email protected]' (length=18)
public 'listed' => string 'true' (length=4)
public 'communicationComment' => null
public 'createdDate' => string '2008-11-10T12:31:26' (length=19)
public 'lastUpdatedDate' => string '2009-08-11T23:39:06' (length=19)
Which means you should be able to access the data you’re looking for with something like this :
foreach ($data->communications->communication as $communication) {
if ($communication->communicationGeneralType == 'Email') {
var_dump($communication->communicationValue);
var_dump($communication->searchCommunicationValue);
}
}
Which will get you :
string '[email protected]' (length=18)
string '[email protected]' (length=18)
“communications
” is an object, that contains “communication
“, which is an array of objects, each one containing a communicationGeneralType
, which allows you to determine whether the current communication is an EMail or not.
WHen it is, you can use the communicationValue
or searchCommunicationValue
fields.
And I don’t really see a way of doing this without iterating over every communication
element…
Hope this helps!