I have the following code:
function searchObject($obj, $field, $value) {
foreach ($obj as $item){ # gets to products
foreach ($item as $child) { #gets to products, products is an array of products
foreach ($child as $grandchild){ #gets to products array
if (isset($grandchild->$field) && $grandchild->$field == $value) {
return $grandchild;
}
}
}
}
return "Not Found";
}
This is how it's called:
$freetrialobj = searchObject($arr, "pid", 15);
But that doesn't work, reporting an 'invalid argument'. Here is the print_r of the object of arrays:
Array: stdClass Object
(
[result] => success
[clientid] => 706
[serviceid] =>
[pid] =>
[domain] =>
[totalresults] => 1
[startnumber] => 0
[numreturned] => 1
[products] => stdClass Object
(
[product] => Array
(
[0] => stdClass Object
(
[id] => 1014
[clientid] => 706
[orderid] => 902
[pid] => 15
[regdate] => 2013-09-03
[name] =>
[groupname] =>
[domain] =>
[dedicatedip] =>
[serverid] => 0
[servername] =>
[serverip] =>
[serverhostname] =>
[firstpaymentamount] => 0.00
[recurringamount] => 0.00
[paymentmethod] => authorize
[paymentmethodname] => Authorize.net
[billingcycle] => Free Account
[nextduedate] => 0000-00-00
[status] => Pending
[username] =>
[password] =>
[subscriptionid] =>
[promoid] => 0
[overideautosuspend] =>
[overidesuspenduntil] => 0000-00-00
[ns1] =>
[ns2] =>
[assignedips] =>
[notes] =>
[diskusage] => 0
[disklimit] => 0
[bwusage] => 0
[bwlimit] => 0
[lastupdate] => 0000-00-00 00:00:00
[customfields] => stdClass Object
What is the best way to check a nested object like this for a value?